多进程多线程GDB调试 (转)
生活随笔
收集整理的這篇文章主要介紹了
多进程多线程GDB调试 (转)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
多進(jìn)程多線程GDB調(diào)試 ? 一、線程調(diào)試指南: ? 1. gdb attach pid 掛載到調(diào)試進(jìn)程? 2. gdb$ set scheduler-locking on 只執(zhí)行當(dāng)前選定線程的開關(guān) 3. gdb$ info threads 顯示當(dāng)前進(jìn)程中的線程 ==============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========================= 說明 進(jìn)程中的線程安裝 1,2,3 ..編號 ? 4. gdb$ thread 1 ?調(diào)試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 設(shè)置斷點端到的函數(shù) 6. 通過執(zhí)行 gdb$ thread id ?調(diào)試id線程 執(zhí)行 gdb$ continue 如果能夠到達(dá)斷點說明,函數(shù)在該函數(shù)中執(zhí)行,運氣很好,直接開始調(diào)試 否則,CTRL+C 跳出該線程 調(diào)試下一個線程,直到找到調(diào)試線程,開始調(diào)試。 二、進(jìn)程調(diào)試指南: ? 程序又多個進(jìn)程組成,在一個父進(jìn)程中創(chuàng)建子進(jìn)程,調(diào)試方法如下: gdb$ set follow-fork-mode [child|parent] 設(shè)置fork后,跟蹤進(jìn)程 ? 后續(xù)可以再進(jìn)行多線程調(diào)試。 以上功能是在gdb6.4的功能 ? gdb6.6中增加了 gdb$ set detach-on-fork [on|off] on: 斷開 follow-fork-mode 指定進(jìn)程 off:gdb控制調(diào)試父子進(jìn)程,follow-fork-mode指定進(jìn)程被調(diào)試,另外一個被掛起。轉(zhuǎn)載于:https://www.cnblogs.com/zengkefu/p/4952818.html
總結(jié)
以上是生活随笔為你收集整理的多进程多线程GDB调试 (转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2010中整理代码快捷键
- 下一篇: 获取程序代码块资源消耗