gpt4 book ai didi

c - 程序仅在首次运行时挂起?

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:21 25 4
gpt4 key购买 nike

我正在尝试在 gdb 中调试一个低级 C 程序。有问题的程序旨在充当包装器,启动另一个进程并监视/干扰其内存使用。

当我在 gdb 中加载程序时,一开始一切似乎都很正常(如果不理想的话)。我看到新进程 fork,然后挂起。就其本身而言,这并不太奇怪。可能是我代码中某处的死锁或无限循环。

但如果我在 gdb 中中断并终止进程,然后在同一个 gdb session 中再次运行它,一切正常。它需要大约半秒的时间才能运行并完全按预期运行。

所以我的问题是:gdb 在我的程序运行之间保留了什么?第一次和第二次执行之间会发生什么变化?

最佳答案

我找到了原因,但我仍然不明白为什么 gdb 会这样。但我会把它张贴在这里,以防它对其他人有用。

我启动了 gdb:

gdb --args ./mywrapper testers_exe/tester-2

第一次运行时:

/home/username/mywrapper testers_exe/tester-2

但是当被杀死并再次运行时,它会模仿最近的过程,而不是它被赋予的参数:

/home/username/testers_exe/tester-2 testers_exe/tester-2

因此它在没有包装器的情况下运行测试,并避免了包装器的无限循环。

关于c - 程序仅在首次运行时挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com