我最近才开始使用GDB,但我对它印象深刻.难怪它是许多用户的事实上的调试器.然而,我发现的一个小烦恼是我发现自己无法在TUI装配视图中滚动当前指令之上.只要显示缓冲区位于当前指令下方,我就可以向上和向下滚动.
除了类似的东西x/20i [address](哪种类似于可滚动窗口的目的)或通过跳转改变内存并设置后续断点之外,有没有办法告诉TUI程序集视图查看可能位于其上方的另一个位置(较低内存比)当前的指令?
编辑:这似乎只在附加到已经运行的进程时发生,而不是在使用gdb启动进程时.有时我可以向上滚动直到当前指令,有时我无法向上滚动.
好的,这是我以前从未见过的一个奇怪的问题:
#include <iostream>
int main()
{
char testchar = 255;
std::cout << (unsigned int)testchar << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:
4294967295
Run Code Online (Sandbox Code Playgroud)
到底是什么?似乎因为char是"full",当它生成新的unsigned int类型时,结果也是"full".这不是我记得或我期望的结果.我希望unsigned int的值为0x000000FF.任何人都可以向我解释这里到底发生了什么吗?
系统:Ubuntu 12.04 64位
g ++版本:4.6.3