gpt4 book ai didi

c++ - 从 C++ 核心转储中推断源代码行号

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:43 25 4
gpt4 key购买 nike

我有一个精简的 linux 系统,我必须在另一个系统上交叉编译我需要的所有应用程序。这些应用程序经常核心,我从中获得的唯一信息是核心函数和指令偏移量。如果我别无选择,我会在可执行文件上执行 objdump,并尝试从指令偏移量和汇编代码片段中猜测源代码。这就是我的生活。

注意:应用程序使用 g++ 交叉编译并被精简。所以 gdb 对我帮助不大

问题:由于编译器/gcc 已将源代码行转换为汇编指令,难道不会有一些选项可以给出指令偏移量和行之间的相关性吗?

最佳答案

使用 -g 创建构建,然后从中获取符号映射。将其保存在某个地方(我建议也保存带有调试符号的二进制文件 - 这样更容易),然后去除调试符号(使用 strip 程序)并将生成的二进制文件部署到目标系统。这是方法:https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html

崩溃后,使用 -g 编译的二进制文件或使用发布二进制文件和单独的调试文件恢复转储。如果您有崩溃地址和带有调试符号的二进制文件,并且您想将其映射到源代码行 - 您可以使用 addr2line -e your_binary crash_address 而不是 gdb。

关于c++ - 从 C++ 核心转储中推断源代码行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com