Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

常用调试工具gdb,dbx,valgrind介绍二

Posted on 2008-10-27 13:06 Prayer 阅读(724) 评论(0)  编辑 收藏 引用 所属分类: C/C++

dbx(SUN studio)调试工具:在利用 dbx 对程序进行源代码级调试前,必须使用 -g 选项

启动:dbx program_name加载要调试的程序,调试JAVA程序dbx program_name.class|.jar,可以指定进程ID来连接正在运行的进程进行调试。

也可以在dbx运行时加载调试程序:(dbx)debug program_name

运行调试程序:run [运行参数] 

查看core文件:可以dbx program_name core,或者dbx - core,再使用where命令显示栈跟踪,找到崩溃位置

设置断点:stop in 函数;stop at file:line ; 也可以先通过file file-name设置当前文件,list function查看源文件,确定要设置断点的行数。在C++中可以将关键字(inmember、inclass、infunction 或 inobject)在类,成员函数,对象中设置断点。stop change variable可设置当变量改变时停止。条件停止断点:stop cond condition。另外在动态库中可以在动态共享库的函数中以在程序启动时在链接的库中设置断点的同样方式来设置断点。

列出所有断点:status

删除断点:delete 断点号

单步执行:step、next,step 命令步入函数,而 next 命令步过函数。step up将一直执行,直至当前函数将控制返回调用它的函数为止。

继续执行:cont

查看调用栈:where 调用栈代表那些已被调用但尚未返回各自调用程序的所有当前活动例程。在栈中,函数及其参数按调用的顺序进行存放。栈跟踪显示程序流执行的停止位置以及执行如何到达此点。它提供程序状态的简明描述。

检查变量:print 变量名 

退出:quit

连接已运行的进程:attach pid

分离已连接的进程:detach pid

查找符号:whereis symbol  打印指定符号所有具体值的列表

要打印输出标识符的声明whatis

对子进程使用运行时检查,可通过attach 子进程ID连接到子进程进行调试。

要显示当前进程的所有线程信息:执行thread,切换到指定线程:thread thr_id

信号处理:

cont -sig signal将信号转发到进程;catch显示当前正在捕获的信号列表;ignore显示程序忽略信号列表

shell方式切换:sh 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理