我正在尝试在 gdb 中调试低级 C 程序。有问题的程序旨在充当包装器,启动另一个进程并监视/干扰其内存使用。
当我在 gdb 中加载程序时,起初一切似乎都很正常(如果不理想的话)。我看到新的进程分叉,然后它挂起。这本身并不会太奇怪。我的代码中某处可能出现死锁或无限循环。
但是,如果我在 gdb 中中断并终止该进程,然后在同一个 gdb 会话中再次运行它,则一切正常。运行大约需要半秒钟,并且完全按照应有的方式运行。
所以我的问题是:gdb 在我的程序运行之间保留了什么?第一次和第二次执行之间会发生什么变化?