微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 如何获取gdb tui程序集输出以显示指令?

我想看到程序集输出,但发现在TUI中,它会输出函数签名偏移量:这很酷,除了我用C编程并且函数签名完全解析的事实,所以我得到名称空间和模板参数使函数sig 2或更多行.这当然会在TUI中被截断,因此它甚至不会显示汇编指令.

有没有办法缩短,更改前缀(可能是文件/行格式)或根本不输出此前缀到汇编指令?

解决方法

虽然目前无法截断此前缀,但解决方法是使用focus asm命令将焦点设置到程序集窗口(如果asm窗口不是焦点窗口),然后使用右箭头键,您可以向右滚动窗口,最终显示装配输出.

注意:这是一种解决方法,但仍然存在问题,因为当您步进或滚动CMD窗口时它将快照回到第一列.此外,当您执行下一个命令时,似乎在ASM窗口中显示当前命令的整个前缀及其汇编代码(即,它没有被截断),环绕屏幕,使显示更加错误.虽然烦人,但可以使用Ctrl-L修复屏幕.此外,向上和向下滚动ASM窗口实际上可能导致调试器崩溃.这可能是由缓冲区溢出引起的,因此不建议这样做,最好只在需要时显示组装窗口,而不是在需要时隐藏它.

hasturkun建议的另一个解决方法选项是set print max-symbolic-offset N (you will have to scroll down to find it’s description),它告诉“如果最接近的早期符号和地址之间的偏移小于”N,则gdb仅显示地址的符号形式.将N设置为1将删除大多数前缀,但让你猜测什么指令匹配哪个源代码行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐