调试 之gdb thread命令 与 ltrace/strace

我们可以通过  1)  gdb prog_name -> r               用在逐步调试自己的程序时

                    2)  gdb -> attach process_id       正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach

                    3)  gdb prog_name core              程序core掉了

三种方式对一个程序进行调试;

 

1. thread——gdb 多线程调试命令:

 

     info threads:           显示当前进程中的线程;

     thread thread_no:  进入线程xx,通常紧接而来的是 bt/f 命令;

 

2. strace/ltrace:

     前者关注系统调用和程序所接收的信号;后者关注库函数调用;

     strace的应用在 我们没有程序的源码,或者不方便从头开始运行程序时;可以方便查看一个应用程序进行了哪些系统调用。

     而在希望知道程序都调用了动态库中的哪些函数时,我们使用 ltrace。ltrace有个-S选项,类似于strace功能。

 

3.检查内存泄漏的工具:

   valgrind (in linux, free) 
   visual leak detector (windows , free)
   boundschecker(windows, free)

   profile工具:
   oprofile
   vtune

时间: 2024-08-01 19:33:18

调试 之gdb thread命令 与 ltrace/strace的相关文章

Linux调试工具strace和gdb常用命令小结

strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -

C/C++程序调试神器GDB命令行调试器使用教程

没有调试器的情况下编写程序时最糟糕的状况是什么?编译时跪着祈祷不要出错?用血祭召唤恶魔帮你运行程序?或者在每一行代码间添加printf("test")语句来定位错误点?如你所知,编写程序时不使用调试器的话是不方便的.幸好,linux下调试还是很方便的.大多数人使用的IDE都集成了调试器,但 linux 最著名的调试器是命令行形式的C/C++调试器GDB.然而,与其他命令行工具一致,DGB需要一定的练习才能完全掌握.这里,我会告诉你GDB的基本情况及使用方法. 安装GDB 大多数的发行版

《Linux C编程从入门到精通》》一2.4 Linux中的调试环境gdb

2.4 Linux中的调试环境gdb Linux C编程从入门到精通 从图2.1中可以看到,在实际开发过程中,程序除了语法正确之外,还必须符合设计者的逻辑意图.如果结果不正确,则可以通过相应的调试环境来跟踪调试,本小节将介绍Linux中最常用的gdb调试环境. Linux包含了一个gdb的调试程序,gdb是一个用来调试C程序的强大的调试器,它使程序员能在程序运行时观察程序的内部结构和内存的使用情况.gdb提供了以下一些功能. 监视程序中变量的值. 设置断点以使程序在指定的代码行上停止执行. 一行

《Linux C编程从入门到精通》——2.4 Linux中的调试环境gdb

2.4 Linux中的调试环境gdb 从图2.1中可以看到,在实际开发过程中,程序除了语法正确之外,还必须符合设计者的逻辑意图.如果结果不正确,则可以通过相应的调试环境来跟踪调试,本小节将介绍Linux中最常用的gdb调试环境. Linux包含了一个gdb的调试程序,gdb是一个用来调试C程序的强大的调试器,它使程序员能在程序运行时观察程序的内部结构和内存的使用情况.gdb提供了以下一些功能. 监视程序中变量的值. 设置断点以使程序在指定的代码行上停止执行. 一行行地执行代码. 在命令行上键入g

《嵌入式 Linux C 语言应用程序设计(修订版)》——2.4 嵌入式Linux调试器GDB的使用

2.4 嵌入式Linux调试器GDB的使用 在程序编译通过生成可执行文件之后,就进入了程序的调试环节.调试一直来是程序开发中的重中之重,如何使程序员能够迅速找到错误的原因是一款调试器的目标. GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具,它是一种强大的命令行调试工具. 一个出色的调试器需要有以下几项功能. 能够运行程序,设置所有能影响程序运行的参数. 能够让程序让指定的条件下停止. 能够在程序停止时检查所有参数的情况. 能够根据指定条件改变程序的运行. 2.4.1 GDB使用

GDB的命令概貌

启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: $ gdbGNU gdb 6.7.1-debianCopyright (C++) 2007 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you ar

《嵌入式 Linux C 语言应用程序设计(修订版)》一2.4 嵌入式Linux调试器GDB的使用

2.4 嵌入式Linux调试器GDB的使用 嵌入式 Linux C 语言应用程序设计(修订版)在程序编译通过生成可执行文件之后,就进入了程序的调试环节.调试一直来是程序开发中的重中之重,如何使程序员能够迅速找到错误的原因是一款调试器的目标. GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具,它是一种强大的命令行调试工具. 一个出色的调试器需要有以下几项功能. 能够运行程序,设置所有能影响程序运行的参数.能够让程序让指定的条件下停止.能够在程序停止时检查所有参数的情况.能够根据指定

linux 调试利器gdb, strace, pstack, pstree, lsof

1)如何使用strace+pstack利器分析程序性能?http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html此文有详细介绍怎么用strace和pstack 2)Linux下多线程查看工具(pstree.ps.pstack)?http://blog.csdn.net/yfkiss/article/details/6729364 3)使用strace,lstrace,truss来跟踪程序的运行过程http://hi.baid

Android笔记之:App调试的几个命令的实践与分析_Android

在Android的应用开发中,我们会用到各种代码调试:其实在Android的开发之后,我们可能会碰到一些随机的问题,如cpu过高,内存泄露等,我们无法简单的进行代码调试,我们需要一个系统日志等等,下面我把握工作中碰到的几个常用命令和方法给大家演示实践一下. 1.logcat命令这个命令最简单常用,可查看帮助,我不多说,如果需要打印时间,加参数-v time adb logcat -v time 2.bugreport命令这个命令也非常简单,但是在实际应用中非常有用,会有从开机之后详细的dumps