【发布时间】:2013-11-20 21:59:52
【问题描述】:
我正在为在 Linux 机器上运行的用 C 语言编写的应用程序实现一些有限的远程调试功能。目标是与应用程序通信并查找任意变量的值或运行任意函数。
我可以通过dlsym() 调用查找符号,但我无法确定返回的地址是指函数还是变量。有没有办法通过这个符号表来确定打字信息?
【问题讨论】:
-
依赖于平台,但你可能会侥幸逃脱 1. 检查地址(空格),或 2. 寻找一些特殊功能的起始代码(蹦床等)
-
或 3. 从 DWARF 调试信息中提取信息(如果有)(这很重要)
-
此应用程序没有调试信息;该应用程序太大,以至于尝试使用调试信息进行编译会使任何尝试读取它的程序崩溃(gdb)
标签: c linux symbol-table symbol-tables