多进程、多线程调试
来源:互联网 发布:淘宝活动时间表 编辑:程序博客网 时间:2024/05/21 09:21
//启动gdb调试
#gdb ./jccc
//设置默认跟踪子进程(gdb) set follow-fork-mode child
//设置当程序在gdb中停止,只有当前的线程会被停止,而其他的线程将会继续运行(gdb默认进程的所有线程都会停止)
(gdb) set non-stop on
//接下来设置断点
(gdb) b processCore.cpp:454
//运行jccc程序
(gdb) r -c /home/xiongli/workspace/PAAS/jchang/jc.conf
Starting program: /home/xiongli/workspace/PAAS/jchang/jccc -c /home/xiongli/workspace/PAAS/jchang/jc.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
setrlimit 500000 ok
[New process 989]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff7aef700 (LWP 990)]
[Thread 0x7ffff7aef700 (LWP 990) exited]
[tcsetpgrp failed in terminal_inferior: No such process]
[New Thread 0x7ffff7aef700 (LWP 991)]
[New Thread 0x7ffff6ed0700 (LWP 992)]
[New Thread 0x7ffff64cf700 (LWP 994)]
[New Thread 0x7ffff5ace700 (LWP 995)]
[New Thread 0x7ffff50cd700 (LWP 996)]
[New Thread 0x7fffeffff700 (LWP 997)]
[New Thread 0x7fffef5fe700 (LWP 998)]
[New Thread 0x7fffeebfd700 (LWP 999)]
(这里我们看到4个线程因为断点停住了,其他线程如期运行)
Thread 2.8 "jccc" hit Breakpoint 1, thread_Processor (lpvoid=0x70f5e0) at processCore.cpp:454
warning: Source file is more recent than executable.
454 if(!g_ProcessCore.m_MobileList.IsValid(fd))
(gdb)
(gdb)
(gdb)
Thread 2.9 "jccc" hit Breakpoint 1, thread_Processor (lpvoid=0x70fbb0) at processCore.cpp:454
454 if(!g_ProcessCore.m_MobileList.IsValid(fd))
Thread 2.10 "jccc" hit Breakpoint 1, thread_Processor (lpvoid=0x710190) at processCore.cpp:454
454 if(!g_ProcessCore.m_MobileList.IsValid(fd))
Thread 2.7 "jccc" hit Breakpoint 1, thread_Processor (lpvoid=0x70edb0) at processCore.cpp:454
454
(gdb) info threads
Id Target Id Frame
2.1 Thread 0x7ffff7af17e0 (LWP 989) "jccc" (running)
2.3 Thread 0x7ffff7aef700 (LWP 991) "jccc" (running)
2.4 Thread 0x7ffff6ed0700 (LWP 992) "jccc" (running)
2.5 Thread 0x7ffff64cf700 (LWP 994) "jccc" (running)
2.6 Thread 0x7ffff5ace700 (LWP 995) "jccc" (running)
2.7 Thread 0x7ffff50cd700 (LWP 996) "jccc" thread_Processor (lpvoid=0x70edb0) at processCore.cpp:454
2.8 Thread 0x7fffeffff700 (LWP 997) "jccc" thread_Processor (lpvoid=0x70f5e0) at processCore.cpp:454
2.9 Thread 0x7fffef5fe700 (LWP 998) "jccc" thread_Processor (lpvoid=0x70fbb0) at processCore.cpp:454
2.10 Thread 0x7fffeebfd700 (LWP 999) "jccc" thread_Processor (lpvoid=0x710190) at processCore.cpp:454
//指定Id可以切换到任何线程,这里切换到要调试的线程
(gdb) thread 2.7
[Switching to thread 2.7 (Thread 0x7ffff50cd700 (LWP 996))]
#0 thread_Processor (lpvoid=0x70edb0) at processCore.cpp:454
454 if(!g_ProcessCore.m_MobileList.IsValid(fd))
//接下来,单步调试当前线程
(gdb) p g_ProcessCore.m_MobileList.IsValid(fd)
$2 = true
(gdb) n
395 while(!g_bWantExit)
(gdb)
397 if(0!=pthread_mutex_lock(&(process->m_mutex_MobileTcpTask)))
(gdb)
404 while(process->m_MobileTcpTaskQueue.empty())
(gdb)
414 if(g_bWantExit)
(gdb)
421 fd = process->m_MobileTcpTaskQueue.front();
(gdb)
422 process->m_MobileTcpTaskQueue.pop();
(gdb)
423 int nQueueSize=process->m_MobileTcpTaskQueue.size();
(gdb)
425 write_log(Debug, "<Thread=%d> fd=%d,QSize=%d",nThreadIndex,fd,nQueueSize);
(gdb)
427 if(0!=pthread_mutex_unlock(&(process->m_mutex_MobileTcpTask)))
(gdb)
434 memset(sLineData,0,sizeof(sLineData));
阅读全文
0 0
- 多进程、多线程调试
- GDB调试多进程、多线程
- gdb多进程多线程调试
- gdb 多进程,多线程调试
- GDB多进程多线程调试
- gdb调试多线程多进程
- gdb调试多进程,多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- gdb调试多进程、多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- 使用gdb调试多进程多线程调试
- GDB调试信号、多进程、多线程
- gdb调试多进程和多线程命令
- GDB调试信号、多线程、多进程
- GDB调试信号、多线程、多进程
- centos配置jdk环境变量
- 《统计学习方法》第7章 课后题答案
- Java基础学习总结——Java对象的序列化和反序列化
- Android学习笔记2-1--组件2--Provider
- java开发类库集锦
- 多进程、多线程调试
- goEasy消息推送,pushlet 向特写用户实时推送
- IC设计基础系列之低功耗篇4:(数字IC)低功耗设计入门(四)——RTL级低功耗设计
- Android学习笔记2-1--组件3--Reciver
- 判断浏览器移动端
- 凸包 点积 Tavas and Pashmaks:CodeForces 535E
- ES6之babel
- Android学习笔记2-1--组件4--Service
- leetCode 49 Group Anagrams