【问题标题】:Can gdb used to step through the assembler instructions of a program not compiled with -g?gdb 可以用来单步执行未使用 -g 编译的程序的汇编指令吗?
【发布时间】:2021-12-25 04:33:06
【问题描述】:

我试图运行一个没有在 Linux 中的 gdb 中使用 -g 选项编译的程序(例如 /bin/ls)。 gdb 运行程序(顺便说一句 lldb 不运行)。我想知道是否可以使用si 执行单步执行机器指令的程序(原则上我不明白为什么不这样做)。但问题是:如何设置断点?如果你只是简单地运行程序,它就会执行并退出。

【问题讨论】:

  • 您当然使用地址设置断点。您还可以使用starti 让程序在第一条指令处停止并从那里单步执行。

标签: linux assembly gdb breakpoints


【解决方案1】:

是的,当然:

  • 使用starti 启动程序但在第一条指令处中断
  • 使用disassemble 显示当前函数的说明
  • 使用break *0x00007ffff7ec3f2d按地址设置断点

【讨论】:

  • 您甚至可以使用layout reg(或layout next/prev)来获得一个用于反汇编的窗格和另一个用于突出显示自上次提示以来更改的寄存器值的窗格.另请参阅the x86 tag wiki 底部的 GDB asm 提示,尽管它实际上适用于任何 ISA 的 asm。
猜你喜欢
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多