美文网首页
Linux多线程调试方法

Linux多线程调试方法

作者: 二胖爸 | 来源:发表于2017-08-02 20:59 被阅读0次

后端开发时常要用到多线程。涉及多线程就可能发生死锁,所以在给线程传入参数时,检查读写区域,是否被公用。如果有,可以加锁,也可以指定一块新的内存地址。
下面主要介绍下如何调试死锁线程。主要采用pstack和gdb两个工具。
1.pstack 是 Linux(比如 Red Hat Linux 系统、Ubuntu Linux 系统等)下一个很有用的工具,它的功能是打印输出此进程的堆栈信息。可以输出所有线程的调用关系栈。
2.GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。Linux 系统中包含了 GNU 调试程序 gdb,它是一个用来调试 C 和 C++ 程序的调试器。可以使程序开发者在程序运行时观察程序的内部结构和内存的使用情况 .

调试流程如下

  1. 查找程序的进程号
ps -ef|grep Process_Name

2.打印进程的堆栈信息

pstack Process_NO
  1. 多次执行上述命令,比较哪几个线程有共同的函数入口,再比较传入参数地址。
  2. 找到是哪个线程死锁之后,再启动gdb
gdb
  1. 启动之后,attach到死锁进程
attach Process_NO
  1. 查看进程堆栈信息
info thread
  1. 刚才我们已经初步定位了死锁的线程,现在切换到该线程
thread NO
  1. 进入到线程后,再查看线程栈信息
backtrace
  1. 切换到另一个线程,查看栈信息
thread NO_2

反复比较,能够看出,具体是哪一块内存触发死锁。

相关文章

  • Linux多线程调试方法

    后端开发时常要用到多线程。涉及多线程就可能发生死锁,所以在给线程传入参数时,检查读写区域,是否被公用。如果有,可以...

  • Linux 线程CPU占用率过高定位分析

    在Linux开发中经常会与多线程打交道,所以多线程开发与调试就很重要 下边说下Linux调试过程中CPU占用率过高...

  • 2018-09-18 Linux内核调试

    【Gooooood转】Linux内核调试方法总结

  • Linux print system

    Linux print system linux中的调试方法有很多种,但我们最常用的也是最关键的调试工具应该就是使...

  • Linux程序调试方法汇总

    Linux下程序的调试方法汇总 在linux中讨论调试工具主要是为那些入门者提供一些帮助。调试工具能让我们能够监测...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

  • Linux相关技术总结

    Linux环境下的GDB调试方法https://blog.csdn.net/horotororensu/artic...

  • linux下多线程死锁调试

    多线程编程是一直多比较难的一个部分, 今天我就来介绍一下在Linux下调试c++程序死锁的一个简单方式,环境是Ub...

  • python调试

    linux python调试技巧 Linux下Python基础调试 http://blog.163.com/liu...

  • 在IntelliJ IDEA中多线程并发代码的调试方法

    通常来说,多线程的并发及条件断点的debug是很难完成的,或许本篇文章会给你提供一个友好的调试方法。让你在多线程开...

网友评论

      本文标题:Linux多线程调试方法

      本文链接:https://www.haomeiwen.com/subject/mfjelxtx.html