调试 之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 12:16:57

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

gdb调试多进程和多线程命令

gdb调试多进程和多线程命令 来源:http://blog.csdn.net/pbymw8iwm/article/details/7876797 1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可. follow-fork-mode  detach-on-fork   说明 pare

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

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

GDB调试技巧:常用命令

一 写在开头 1.1 本文内容 总结GDB调试的一些常用命令.不定期更新. 二 常用命令 GDB和VIM一样,功能异常强大,但要熟练掌握它却很需要费时间.不过,尽管它们两个的命令多如牛毛,但只要掌握最常用的那几个命令就可以快速上手.下面的列表总结了GDB最常用的几个命令. 简写 全称 备注 l list 显示指定行号或者指定函数附近的源代码 b break 在指定行号或者指定函数开头处设置断点.如b main r run 运行程序,直到程序结束或者遇到断点而停下 c continue 在程序中断

[转] linux下的c/c++调试器gdb

http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdbLinux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: * 设置断点:* 监视程序变量的值:* 程序的单步执行:* 修改变量的值.       gdb支持下列语言C, C+

gdb基础命令和常用操作补充

GDB是Unix下的一个程序调试工具,类似于windows下面的VC调试器,区别在于GDB采用全命令行控制. 使用GDB需要在编译时使用-g选项,gcc支持-g –O选项同时使用,但如果还在调试阶段,尽量不要-O2,也不要删除(strip)符号表.作用如下: 让程序按照自己定义的要求运行,不必每次改变程序 让程序在设置的断点处停住,并且检查程序的执行情况 动态改变程序的执行环境 一.启动调试 gdb <program> 启动程序进行调试 gdb ./bin/chat_server gdb --

GDB常用命令使用说明(一)

本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/gdb_instructions1.html 全部关于gdb的文章索引请点这里 GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具.功能极其强大,几乎涵盖了你所需要的全部功能. GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的定制要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住. 3.当程序被停住时,可以检查此时你的程序中所

gdb常用命令

在调试程序的时候,gdb是一柄利器,恰当的使用gdb可以解决掉程序的许多bug. gdb并不检查语法错误,那是gcc或者g++的事情,gdb干的是调试的事情. 说明: (1)gdb 程序名 [corefile]之类的是代表命令的用法,[]中间的内容是可选项,即你可以加,也可以不加. (2)如果需要重复执行一条命令,不需要每次都键入命令,gdb记住了最后一个被执行的命令,只要简单的按enter键就可以重复执行最后的命令. 1.  gdb命令 该命令主要用来启动调试. gdb 程序名 [corefi

调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令

调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 windbg命令分为标准命令.元命令.扩展命令 标准命令提供最基本的调试功能,不区分大小写.如:bp g dt dv k等 元命令提供标准命令没有提供的功能,也内建在调试引擎中,以.开头.如.sympath .reload等 扩展命令用于扩展某一方面的调试功能,实现在动态加载的扩展模块中

Linux GDB常用命令一栏

Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y 2.显示和查找程序源代码 (1)list :显示10行代码,但是我为什么没有显示成功呢? (2)list 5,10:显示源文件第五行到第十行的代码 (3)list t4.c:5,10:显示源文件中第五行到第十行的代码,在跳是含有多个源文件的次序时使用: (4)list ge