Я хотел бы установить точку останова с помощью gdb, но я не знаю соответствующего символа для метода. Есть ли способ сделать это?Как получить имя символа функции уровня JVM?
ответ
Я думаю, что спецификация JNI, на которую указывает комментарий, является принципиальным способом сделать это.
Однако, это также не так сложно найти функцию интерактивно из gdb. Все, что вам нужно знать, это имя вашего метода (назовем его «привет») и что имя JNI всегда начинается с «Java_». Затем вы можете задать gdb для всех соответствующих функций:
(gdb) info function ^Java_.*hello
Это найдет все функции этого имени.
Это работает до тех пор, пока ваш метод имеет простое имя или имя camelCase. Он не будет работать для встроенных символов «_» или не-ASCII. Для этого вам придется немного прочитать спецификацию.
Теперь это не сработает, если gdb уже не может видеть функцию - например, если JNI .so
еще не загружен. Вы можете выполнить это, либо работая до точки загрузки, либо используя nm
или тому подобное в соответствующей библиотеке.
- 1. Flash: Получить имя символа
- 2. Выведенное имя символа функции экспорта
- 3. windbg: как получить имя исходного файла символа?
- 4. Как получить имя функции?
- 5. Как получить имя функции
- 6. DbgHelp - Получить полную подпись символа (имя функции + типы параметров)
- 7. Как получить имя символа в итераторе
- 8. Файл символа Pager (pdb) и получить имя и смещение функции
- 9. Изменения уровня системы для JVM
- 10. получить искаженное имя символа изнутри C++
- 11. Получить каждое имя категории уровня родительского
- 12. Как получить имя текущей функции?
- 13. Как получить имя функции из этой функции?
- 14. Как получить имя функции указателя функции C
- 15. Как получить имя функции в функции Qt
- 16. Получить имя функции изнутри функции
- 17. Получить имя меню верхнего уровня - Joomla 3
- 18. Получить имя последнего уровня продукта в magento
- 19. Получить доменное имя второго уровня из URL
- 20. Как получить JVM?
- 21. Как получить имя/идентификатор потока JVM через известный PID/TID
- 22. Как возвращается JVM из функции
- 23. Как отформатировать имя уровня протоколирования
- 24. Получить имя символа в слове VBA
- 25. вызов динамической функции JVM
- 26. Перевести имя низкого уровня диска на имя диска высокого уровня
- 27. Получить индекс верхнего уровня из вложенной функции
- 28. Перечислить список функций и имя функции возврата в качестве символа
- 29. Получить имя функции от экземплярированной функции
- 30. Получить имя функции от адреса функции
Вы имеете в виду метод 'native'? В противном случае нет такой вещи, как символ. – Holger
Да собственного метода – Bionix1441
http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/design.html#resolving_native_method_names – Holger