[英]Program hangs only on first run?
我正在嘗試調試gdb中的低級C程序。 該程序旨在充當包裝器,啟動另一個進程並監視/干擾其內存使用。
當我在gdb中加載程序時,起初看起來一切正常(如果不理想)。 我看到新的流程分支,然后掛起。 就其本身而言,這並不奇怪。 可能在我的代碼中某處出現死鎖或無限循環。
但是,如果我中斷並殺死了gdb中的進程,然后在同一gdb會話中再次運行該進程,則一切正常 。 運行大約需要半秒鍾,並且完全按照應有的方式運行。
所以我的問題是: 在程序運行之間gdb保留什么? 第一次執行與第二次執行之間會發生什么變化?
我找到了原因,盡管我仍然不明白為什么gdb以這種方式起作用。 但是我會在這里發布它,以防它對其他人有用。
我啟動了gdb:
gdb --args ./mywrapper testers_exe / tester-2
首次運行時:
/ home / 用戶名 / mywrapper testers_exe / tester-2
但是當被殺死並再次運行時,它模仿了最近的過程 ,而不是給出的論點:
/ home / 用戶名 / testers_exe / tester-2 testers_exe / tester-2
因此,它在沒有包裝器的情況下運行了測試,並避免了包裝器的無限循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.