﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-blueskiner-随笔分类-调试</title><link>http://www.cppblog.com/blueskiner/category/19762.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Aug 2012 10:46:29 GMT</lastBuildDate><pubDate>Sat, 04 Aug 2012 10:46:29 GMT</pubDate><ttl>60</ttl><item><title>Unix程序调试工具dbx常用命令</title><link>http://www.cppblog.com/blueskiner/archive/2012/08/04/186271.html</link><dc:creator>卡洛shll</dc:creator><author>卡洛shll</author><pubDate>Sat, 04 Aug 2012 09:21:00 GMT</pubDate><guid>http://www.cppblog.com/blueskiner/archive/2012/08/04/186271.html</guid><wfw:comment>http://www.cppblog.com/blueskiner/comments/186271.html</wfw:comment><comments>http://www.cppblog.com/blueskiner/archive/2012/08/04/186271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/blueskiner/comments/commentRss/186271.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/blueskiner/services/trackbacks/186271.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">dbx(SUN studio)调试工具：在利用 dbx 对程序进行源代码级调试前，必须使用 -g 选项</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">启动：dbx program_name加载要调试的程序，调试JAVA程序dbx program_name.class|.jar，可以指定进程ID来连接正在运行的进程进行调试。</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">也可以在dbx运行时加载调试程序：(dbx)debug program_name</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">运行调试程序：run [运行参数]&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">查看core文件：可以dbx program_name core，或者dbx - core，再使用where命令显示栈跟踪，找到崩溃位置</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">设置断点：stop in 函数；stop at file：line ; 也可以先通过file file-name设置当前文件，list function查看源文件，确定要设置断点的行数。在C++中可以将关键字（inmember、inclass、infunction 或 inobject）在类，成员函数，对象中设置断点。stop change variable可设置当变量改变时停止。条件停止断点：stop cond condition。另外在动态库中可以在动态共享库的函数中以在程序启动时在链接的库中设置断点的同样方式来设置断点。</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">列出所有断点：status</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">删除断点：delete 断点号</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">单步执行：step、next,step 命令步入函数，而 next 命令步过函数。step up将一直执行，直至当前函数将控制返回调用它的函数为止。</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">继续执行：cont</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">查看调用栈：where 调用栈代表那些已被调用但尚未返回各自调用程序的所有当前活动例程。在栈中，函数及其参数按调用的顺序进行存放。栈跟踪显示程序流执行的停止位置以及执行如何到达此点。它提供程序状态的简明描述。</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">检查变量：print 变量名&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">退出：quit</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">连接已运行的进程：attach pid</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">分离已连接的进程：detach pid</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">查找符号：whereis symbol&nbsp; 打印指定符号所有具体值的列表</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">要打印输出标识符的声明whatis</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对子进程使用运行时检查，可通过attach 子进程ID连接到子进程进行调试。</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">要显示当前进程的所有线程信息：执行thread，切换到指定线程：thread thr_id</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">信号处理：</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">cont -sig signal将信号转发到进程；catch显示当前正在捕获的信号列表;ignore显示程序忽略信号列表</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">shell方式切换：sh</p><img src ="http://www.cppblog.com/blueskiner/aggbug/186271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/blueskiner/" target="_blank">卡洛shll</a> 2012-08-04 17:21 <a href="http://www.cppblog.com/blueskiner/archive/2012/08/04/186271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>