利用Arthas进行调试分析
查看类的属性
sc -d -f com.yuqiaotech.scm.service.WarehouseIOServiceForStd
查看类的方法
sm com.yuqiaotech.scm.service.WarehouseIOServiceForStd
ognl ‘@com.yuqiaotech.scm.service.WarehouseIOServiceForStd@payNames’ //没成功
用下面的方法,可以成功
sc -d com.yuqiaotech.scm.service.WarehouseIOServiceForStd
把classloader的hash 复制下来 7166ac50
ognl -x 3 ‘@com.yuqiaotech.scm.service.WarehouseIOServiceForStd@payNames’ -c 7166ac50
//跟踪调用路径和时间
trace com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById
yqrpc(“warehouseIOServiceForStd.getWarehouseIOById”)(99453);
//5秒打印一次执行情况
monitor -c 5 com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById
//观察参数和返回值
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params[0],returnObj}’
// 查看入参和出参大小,如果返回的是set之类的
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params[0],returnObj.size}’
// 查看入参和出参中是否包含 ‘items’,如果返回的是set之类的
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params[0],returnObj.contains(“items”)}’
// 查看入参和出参,出参 toString
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params[0],returnObj.toString()}’
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params,returnObj,throwExp}’ -n 5 -x 3
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘{params,returnObj,throwExp}’ -x 3
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘target’
watch com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById ‘target.warehouseIOManager’
watch com.yuqiaotech.scm.webapp.action.WarehouseIOForStandardAction outJsonSaveStandard ‘target’
watch com.yuqiaotech.scm.webapp.action.WarehouseIOForStandardAction outJsonSaveStandard {‘target.warehouseIOJsonStr’,’target.warehouseIOItemsJsonStr’}
trace com.yuqiaotech.scm.webapp.action.WarehouseIOForStandardAction outJsonSaveStandard
watch net.sf.json.JSONObject optLong ‘{params,returnObj,throwExp}’ -x 3
//查看异常信息
stack com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById
yqrpc(“warehouseIOServiceForStd.getWarehouseIOById”)(-1);
tt -t com.yuqiaotech.scm.service.WarehouseIOServiceForStd getWarehouseIOById
tt -i 1001
tt -i 1001 -p 可以看到调用的参数