在我的C程序中,我有一个指向虚拟内存中某个地址的指令指针,例如函数指针。我想在运行时使用执行的二进制文件中的调试信息将此地址Map到相应的源位置(文件路径、行号)。我知道GDB implements something like this,但我不确定如何为我的项目处理这个问题。
我知道addr2line和llvm-symbolizer,但这两个工具都分析ELF文件中的地址,而不是已经加载到虚拟内存中的二进制文件。同样,这也不是How do I access the addr2line
functionality within my C++ program?的副本
1条答案
按热度按时间yb3bgrhw1#
感谢Yakov Galka的评论,我找到了一个解决我想做的事情的方法:
然后,我可以调用
addr2line
来确定源位置。在我的例子中,所有东西都被喜欢到a.out
中,所以我可以调用然后输出如下内容: