我想用gdb设置断点但我不知道该方法的相应符号。有没有办法做到这一点?
答案 0 :(得分:2)
我认为评论指出的JNI规范是这样做的原则性方法。
但是,从gdb以交互方式找到该函数也不难。您需要知道的只是您的方法的名称(让我们称之为"您好")并且JNI名称始终以" Java _"开头。然后你可以向gdb索取所有匹配函数:
(gdb) info function ^Java_.*hello
这将找到该名称的所有功能。
只要您的方法具有plain或camelCase名称,此方法就可以正常工作。它不适用于嵌入式" _"或非ASCII字符。为此,您将不得不阅读规范。
现在,如果gdb已经看不到该函数,这将无效 - 例如,如果尚未加载JNI .so
。您可以通过运行到加载点或在相关库上使用nm
等来完成此操作。