0
A
回答
1
一個簡單的解決方案可能是在調試會話中啓動進程的小shell腳本中包含有問題的二進制文件(由進程X調用),並應用預配置的斷點。
1
我可以想到兩種方法來做到這一點。
最簡單的就是
set follow-fork-mode child
無論何時創建新的客戶端進程,GDB都會調試子進程。但是,使用這種模式,您將無法再調試父進程。在子過程(上述
ls
)添加一些代碼來等待一個信號說SIGCONT在開始的時候。每當創建子進程時,都要將GDB(新的GDB實例)與其子進程的PID相關聯,然後發出SIGNING信號繼續。
0
您可以使用catch exec
[1]停止對exec
電話:
(gdb) catch exec
Catchpoint 1 (exec)
(gdb) r
Starting program: /tmp/a.out
process 7544 is executing new program: /bin/ls
Catchpoint 1 (exec'd /bin/ls), 0x00007ffff7ddfaf0 in _start() from /lib64/ld-linux-x86-64.so.2
然後,你可以做任何你想用新工藝。對於各種與叉相關的選項,請參閱link in the comment的dbrank0。
相關問題
- 1. upstart在任何其他進程之前啓動啓動過程
- 2. 如何啓動其他父進程時死亡的進程?
- 3. 如何創建一個在c#中啓動其他進程的進程?
- 4. 如何設置由CreateProcess啓動的進程的語言環境()
- 5. pkill殺死由父shell中的其他用戶啓動的sshd進程
- 6. 無法刪除由其他進程
- 7. 如何在設置後續分支模式子進程後在子進程中設置斷點?
- 8. 以編程方式設置啓動進程時的位置
- 9. IntelliJ - 由新進程啓動的調試進程
- 10. 設置應用程序其他進程的用戶模型ID
- 11. 在其他用戶的憑據下啓動進程
- 12. PHP - Apache進程被其他進程
- 13. 殺死進程殺死其他進程
- 14. 啓動進程
- 15. 限制由System.Diagnostics.Process啓動的進程
- 16. 取消由matlab啓動的unix進程
- 17. c#進程不斷重啓
- 18. 如何檢查外部WPF進程或其他進程是否啓動?
- 19. IIS中的進程啓動
- 20. 其他進程的do_mmap_pgoff
- 21. 其他進程的GetKeyboardLayoutName?
- 22. 獲取其他用戶啓動的後臺進程的PID
- 23. 如何設置env變量並在C中啓動進程?
- 24. 在OS X中運行進程,查找啓動程序進程
- 25. 殺死進程,啓動進程
- 26. 根據後臺進程啓動進程
- 27. 從C++進程啓動Java進程
- 28. Eclipse進程啓動
- 29. 將進程移動到其他TTY
- 30. 等待其他進程
不確定,但我會讀這:http://sourceware.org/gdb/onlinedocs/gdb/Forks.html – dbrank0