mcs*_*sim 1 assembly dwarf addr2line
给定一个目标文件和地址,addr2line工具可以将其与源代码中的文件和行号相关联。
我想相反。给定行号和目标文件,我想获得指令地址列表,这些地址对应于源代码中的给定行。
我知道我可以使用objdump -DS并查找一行,但这很不方便,并且需要手动进行过滤才能过滤出地址。如果我给它列出行,您知道有什么工具可以做我想要的吗?
UPD。
我举一个我想要的例子。
我有一组文件行:
src/a.c:14
src/a.c:28
src/b.c:44
Run Code Online (Sandbox Code Playgroud)
我将此列表传递给工具:
cat lines | line2addr -e lib.so
Run Code Online (Sandbox Code Playgroud)
它向我报告这些行的指令地址:
0x442: src/a.c:14
0x444: src/a.c:14
0x44a: src/a.c:14
0x584: src/a.c:28
0x588: src/a.c:28
...
Run Code Online (Sandbox Code Playgroud)
使用实用程序的方式是使用以下GDB cmd-line:
gdb ../main.o -ex "info line main.c:39" --batch
Line 39 of "main.c" starts at address 0x36 <main+54> and ends at 0x5e <main+94>.
Run Code Online (Sandbox Code Playgroud)
GDB接受使用调试信息编译的对象或可执行文件(-g)
。使用GDB 7.6及更高版本。加载对象文件时,早期版本在Windows上崩溃。
可以通过-ex
多次应用该开关来翻译多行:
gdb ../main.o -ex "info line main.c:39" -ex "info line main.c:41" --batch
Line 39 of "main.c" starts at address 0x36 <main+54> and ends at 0x5e <main+94>.
Line 41 of "main.c" starts at address 0x5e <main+94> and ends at 0x70 <main+112>.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
672 次 |
最近记录: |