zoukankan      html  css  js  c++  java
  • GDB调试多线程程序

    gdb有thread相关命令,如info thread(简写成info th)显示线程消息,b xx thread yy可以针对某个thread设置断点,thread xx(简写成thr xx)切换到某个thread。
    再配合frame(简写f)相关的命令(比如updown在不同frame间跳转),基本可以处理若干个不同的线程间的debug……

    其他的debugger,应该也会有同样的功能。

    不过如果用的线程比较多的话……建议还是写一些辅助函数,在debug过程中打印出tid,然后对比一些蹊跷的地方,效果会更好。


    查找进程id
    
    ps -e | grep a.out(a.out)为名字
    12826 pts/3    00:00:00 a.out //进程id为12826

    启动gdb attach 进程 [root@localhost
    ~]# gdb a.out 12826 (gdb) info threads //显示所有线程信息 (gdb) thread 2 //跳到第2个线程 (gdb) bt //查看线程2的堆栈,可以发现该线程堵塞在lock.c第17行

  • 相关阅读:
    UVA-1595 Symmetry
    UVA-10763 Foreign Exchange
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
  • 原文地址:https://www.cnblogs.com/bohaoist/p/5068197.html
Copyright © 2011-2022 走看看