我在大学和目前的工作中使用 gdb 完成了很多工作,但我需要学习如何在 Windows 上使用 CDB 和 WinDBG 进行开发。我更喜欢使用 CDB,因为 Emacs 中有一个很好的模式。
启动 CDB 后如何更改当前目录?这很有用,因为当前目录默认为可执行目录(
cdb C:/dev/myexe.exe
将给出当前 dir=c:/dev,尽管我从 启动了 cdbC:/testdir
),但我可能在不同的驱动器上有一个测试目录,我更愿意将其用作工作目录。或者我可能有多个测试目录,我想在它们之间轻松切换,而不会丢失进程的断点。更改工作目录可以在 GDB 中使用cd
. 在 CDB 中如何做到这一点?假设我开始使用调试一个新进程,
cdb my.exe arg1 arg2
并且在设置断点和代码单步执行几分钟后,我意识到我应该指定一个额外的参数。在 GDB 中,我可以在运行进程时设置命令行参数 (r arg1 arg2 newarg3 ...
)。我的断点和工作区中的所有内容都保持不变。可以在 CDB 中做到这一点吗?看起来我需要保存工作区,使用调试过程的新参数重新启动 CDB,然后加载工作区以获取断点,这比发出运行命令要多得多。
在过去的几周里断断续续地搜索后,我还没有找到答案,我真的很想摆脱 Visual Studio 调试。
编辑:澄清#1和#2