【问题标题】:gdb: show corresponding lines in source and asmgdb:在源代码和 asm 中显示相应的行
【发布时间】:2020-01-11 19:26:11
【问题描述】:

在 TUI 模式下运行 gdb 时,显示源代码和汇编代码时,是否可以选择突出显示映射到选定源代码行的指令集?

【问题讨论】:

  • 不这么认为,但也许你可以编写脚本。特别是对于优化代码,这种关系可能不清楚。如果您想要的只是静态分析,那么 Godbolt 可以做到这一点。
  • @Jester:谢谢,我去看看godbolt。我正在使用 gdb 中记录的一些 btrace 进行调试,并且想要一个源/asm 映射以使该过程更快一点。

标签: assembly gdb


【解决方案1】:

您可以使用 GDB Dashboard 部分完成。

https://github.com/cyrus-and/gdb-dashboard

从下面的截图你可以看到在这行代码中第一次调用operator<<

std::cout << a << std::endl;

映射到4条汇编指令:

0x00000000004011a2  main()+28 mov    -0x4(%rbp),%eax
0x00000000004011a5  main()+31 mov    %eax,%esi
0x00000000004011a7  main()+33 mov    $0x404060,%edi
0x00000000004011ac  main()+38 callq  0x401070 <_ZNSolsEi@plt>

它们在装配部分以绿色突出显示。

您可以在同一行多次执行ni 命令,转到第二次调用operator&lt;&lt;,您将看到第二次映射到3 个汇编指令:

0x00000000004011b1  main()+43 mov    $0x401030,%esi
0x00000000004011b6  main()+48 mov    %rax,%rdi
0x00000000004011b9  main()+51 callq  0x401050 <_ZNSolsEPFRSoS_E@plt>

【讨论】:

  • 对了,你知道如何缩小控制台部分吗?当我输入命令时,它会不断增长,将仪表板的所有其他部分推离窗口。
  • 这可能是可配置的。在 github 上尝试 help dashboard 命令或仪表板 wiki:github.com/cyrus-and/gdb-dashboard/wiki
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多