在gdb中调试C或C++程序时有没有办法切换到汇编? (假设所有源文件及其相应的汇编文件都可用)
有一种方法可以反汇编一个函数或某段代码,这就是你想要的吗?
执行此操作的命令是
disassemble <function name>
或内存位置。
你说的是这个吗?
(gdb) help disassemble
Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.
在新的 gdb 版本 7.0 中,
disassemble
命令可以采用新参数 /m
,这使其发出混合源代码和反汇编代码。
使用 disas 命令可能会达到你想要的效果。
根据内部帮助,disas 命令执行以下操作:
Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.
这个问题也在 cgdb 的 googlegroup 中被问到 https://groups.google.com/forum/?hl=de&fromgroups=#!topic/cgdb-users/E-jZCJiBAQQ
还没有关于为什么布局汇编不起作用的答案
编辑:他们最近发布并表示该功能尚未实现。 (查看上面的链接)