jni错误一般会在hs_err_pid*****.log记录错误的原因,假设该进程为6789,那么出错的文件为hs_err_pid6789.log,这个文件在程序运行的当前目录中。
如果是缺少包,就会在该文件中提示。
如果是包错误,可以看到该文件的调用栈
如果是提示找不到函数,比如提示libAbcTest.so找不到函数funcA,那么可以用
readelf -a libAbcTest.so grep funcA
查看是不是有该函数。
如果找不到该文件,可以在程序中写一个足够长的sleep,让该程序在出错前停住。
用ps -aux查看该程序的进程号,假设该程序的进程号为12345
使用cat /proc/12345/maps 查看该程序的调用栈。
排错过程与上节相同。
网友评论