當前位置:
首頁 >
多进程多线程GDB调试 (转)
發布時間:2025/5/22
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
多进程多线程GDB调试 (转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
多進程多線程GDB調試 ? 一、線程調試指南: ? 1. gdb attach pid 掛載到調試進程? 2. gdb$ set scheduler-locking on 只執行當前選定線程的開關 3. gdb$ info threads 顯示當前進程中的線程 ==============out put example========================= 12 Thread 0x41f16940 (LWP 6922) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 11 Thread 0x42917940 (LWP 6923) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 10 Thread 0x43318940 (LWP 6924) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 9 Thread 0x43d19940 (LWP 6925) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 8 Thread 0x4471a940 (LWP 6926) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 7 Thread 0x4511b940 (LWP 6927) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 6 Thread 0x40a03940 (LWP 6928) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 5 Thread 0x40b04940 (LWP 6929) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 4 Thread 0x40c05940 (LWP 6930) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 3 Thread 0x4521c940 (LWP 6931) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 2 Thread 0x45c1d940 (LWP 6932) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 1 Thread 0x2b277c3bba40 (LWP 6913) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 ==============out put example========================= 說明 進程中的線程安裝 1,2,3 ..編號 ? 4. gdb$ thread 1 ?調試1線程 gdb$ info threads ==============out put example========================= 12 Thread 0x41f16940 (LWP 6922) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 11 Thread 0x42917940 (LWP 6923) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 10 Thread 0x43318940 (LWP 6924) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 9 Thread 0x43d19940 (LWP 6925) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 8 Thread 0x4471a940 (LWP 6926) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 7 Thread 0x4511b940 (LWP 6927) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 6 Thread 0x40a03940 (LWP 6928) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 5 Thread 0x40b04940 (LWP 6929) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 4 Thread 0x40c05940 (LWP 6930) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 3 Thread 0x4521c940 (LWP 6931) ?0x00000036e7c0ab99 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 2 Thread 0x45c1d940 (LWP 6932) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 *1 Thread 0x2b277c3bba40 (LWP 6913) ?0x00000036e74cced2 in select () from /lib64/libc.so.6 ==============out put example========================= ?? *代表選定線程 5. gdb$ b function_name 設置斷點端到的函數 6. 通過執行 gdb$ thread id ?調試id線程 執行 gdb$ continue 如果能夠到達斷點說明,函數在該函數中執行,運氣很好,直接開始調試 否則,CTRL+C 跳出該線程 調試下一個線程,直到找到調試線程,開始調試。 二、進程調試指南: ? 程序又多個進程組成,在一個父進程中創建子進程,調試方法如下: gdb$ set follow-fork-mode [child|parent] 設置fork后,跟蹤進程 ? 后續可以再進行多線程調試。 以上功能是在gdb6.4的功能 ? gdb6.6中增加了 gdb$ set detach-on-fork [on|off] on: 斷開 follow-fork-mode 指定進程 off:gdb控制調試父子進程,follow-fork-mode指定進程被調試,另外一個被掛起。轉載于:https://www.cnblogs.com/zengkefu/p/4952818.html
總結
以上是生活随笔為你收集整理的多进程多线程GDB调试 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2010中整理代码快捷键
- 下一篇: 获取程序代码块资源消耗