gpt4 book ai didi

c++ - 从二进制文件中获取源文件(和位置)列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:56 24 4
gpt4 key购买 nike

我在 Linux 发行版中工作。我正在编写一个 C/C++ 程序,该程序需要一个二进制(可执行文件)编译时使用的源文件列表。当然,我使用带有 -g 标志的 GCC 编译了二进制文件。使用 gdb 我发现二进制文件的格式是 DWARF2:

(gdb) info source
Current source file is src/main.cpp
Compilation directory is /path/to/source
Located in /path/to/source/src/main.cpp
Contains 43 lines.
Source language is c++.
Compiled with DWARF 2 debugging format.
Does not include preprocessor macro info.

使用 objdumpelfread 我看到我需要的信息:

bash> objdump -W binary
...
The File Name Table:
Entry Dir Time Size Name
1 1 0 0 main.cpp
2 2 0 0 curses.h
3 3 0 0 tprint.h
4 3 0 0 twindow.h
5 4 0 0 locale.h
...

使用 dwarfdump 我看到感兴趣的变量是:DW_AT_comp_dirDW_AT_decl_file。使用一个简单的 bash 脚本(一些 grepsed 调用)我能够获得源列表。我想做的是从 C/C++ 程序中获取此源列表。为此,我安装了 libdwarf,但由于缺少任何使用示例,我无法轻松实现我想要的。

我的问题是:1) 有人可以提供一个从二进制文件中读取调试信息的 C/C++ 示例吗?如果有其他库可以执行此操作,则不必与 libdwarf 一起使用。2) gdb 可以提供源列表吗?最终我想构建自己的 gdb 界面并滚动浏览可用的源文件。

问候

最佳答案

Can gdb provide a source list?

是:信息来源

关于c++ - 从二进制文件中获取源文件(和位置)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380177/

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