在NDB中做单步跟踪

单步跟踪是调试器的常用功能,考虑到用户背景的不同,NDB采取了兼容的策略。

命令n

在gdb中,命令n是普通的单步命令,遇到子函数不进入
在windbg中,命令n用来显示和设置当前所使用的数制(十六进制,十进制等)。
综合以上因素,在ndb中的n行为定义如下:
n后面带有8、10、16三种参数时,表示设置默认的数制,这是遵循windbg老用户的习惯
n后面没有参数或者跟随8、10、16之外的数值时,n用作单步,这是遵循gdb老用户的习惯

如果要观察当前的数制,请使用nb(number base)命令

命令p

如果p后面有参数,则执行gdb的print逻辑,评估C/C++表达式,相当于gdb的p命令和windbg中的??命令。
比如:
`p (uint32_t)(int)0xffffffc0096530cc

unsigned int 0xd50323bf
`
如果p后面没有参数,则执行单步动作(遵循windbg的传统),与gdb中的n等价

命令s

如果没有参数输入si,则执行gdb的s命令逻辑
其它情况遵循windbg的传统

作者:Zhang Yinkui  创建时间:2024-08-16 10:57
最后编辑:Zhang Yinkui  更新时间:2024-08-16 14:23