【发布时间】:2020-01-08 00:30:04
【问题描述】:
在运行时,我试图恢复未导出但可通过共享库的符号表获得的函数的地址,因此对调试器可见。
我正在研究需要捕获某些事件并操纵运行时的高级调试程序。其中一项操作需要知道在其他地方用作密钥的私有函数的地址(只是地址)。
我当前的解决方案使用nm 在构建时计算该私有函数相对于已知导出函数的偏移量。此解决方案限制了调试功能,因为它依赖于共享库的特定构建。
最好的解决方案应该是能够在运行时恢复地址。
我希望从应用程序中与附加的调试器进行通信,但很难找到任何 API。
我有什么选择?
【问题讨论】:
-
你想和调试器交流什么?函数地址?你能把它打印出来然后手动输入调试器吗?
-
有问题的功能来自我无法控制的第 3 方图像。我需要使用调试器按名称恢复它的地址,以便我可以在应用程序代码的其他地方使用它。
-
听起来您真正想做的是查询调试数据库以获取有关符号的信息。
-
我不完全确定这个符号只能通过调试数据库获得:可能还有一个我不知道的链接器标志。