DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 235 236 237 238 239 240 241 242 243 ··· 474 下一页

2016年6月30日

摘要: 我们可以通过 1) gdb prog_name -> r 用在逐步调试自己的程序时 2) gdb -> attach process_id 正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach 3) gdb prog_name core 程序core掉了 三种方式对一个程序进行调试; 阅读全文
posted @ 2016-06-30 14:54 DoubleLi 阅读(1774) 评论(0) 推荐(0)

摘要: 只做工作总结备忘之用。 正在烧镜像,稍总结一下进来改bug遇到的问题。 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现。交付在即,于是加调试信息,反复跑配置的脚本,定位bug。 一,期初怀疑是vtysh与vrrpd进程通信出现 阅读全文
posted @ 2016-06-30 14:52 DoubleLi 阅读(607) 评论(0) 推荐(0)

摘要: 摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来。这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手段。本文对LWP和strace命令做了简明扼要的介绍,并通过一个实例来说明如何运用。总而言之,LWP 阅读全文
posted @ 2016-06-30 14:42 DoubleLi 阅读(6176) 评论(0) 推荐(0)

摘要: gdb 调试多线程如果目标进程已经core dump了,那么 gdb -c core xxx xxx是对应的程序文件。如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法一是 gdb -p xxx xxx是该进程的进程ID或者用gcore xxx先获取对应进程的core,他会生成一个co 阅读全文
posted @ 2016-06-30 14:37 DoubleLi 阅读(1330) 评论(0) 推荐(0)

摘要: 线程有自己的寄存器,运行时堆栈或许还会有私有内存。 gdb提供了以下供调试多线程的进程的功能: * 自动通告新线程。 * \ "thread THREADNO\ ",一个用来在线程之间切换的命令。 * \ "info threads\ ",一个用来查询现存线程的命令。 * \ "thread app 阅读全文
posted @ 2016-06-30 14:36 DoubleLi 阅读(387) 评论(0) 推荐(0)

摘要: 一、多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程。 thread <ID> 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler- 阅读全文
posted @ 2016-06-30 14:34 DoubleLi 阅读(733) 评论(1) 推荐(0)

摘要: GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说GDB主要调试 阅读全文
posted @ 2016-06-30 14:23 DoubleLi 阅读(17623) 评论(0) 推荐(0)

摘要: 方法一:strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] 阅读全文
posted @ 2016-06-30 14:18 DoubleLi 阅读(8894) 评论(0) 推荐(0)

摘要: pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。 int pthread_kill(pthread_t threa 阅读全文
posted @ 2016-06-30 13:34 DoubleLi 阅读(8451) 评论(0) 推荐(0)

摘要: 我编写了一个循环: long i; for (i = 0; i < 999999; i++) { mt.a += 1; sleep(1); }把它编译成a.out,并在后台执行它:./a.out & [1] 2570 然后用命令gdb ./a.out 2570可以附加到这个进程上。被时进程会中断。 阅读全文
posted @ 2016-06-30 13:32 DoubleLi 阅读(934) 评论(0) 推荐(0)

上一页 1 ··· 235 236 237 238 239 240 241 242 243 ··· 474 下一页