dbx源码调试工具快速上手

dbxunix下普遍的源码调试工具
掌握好了dbx的使用,无疑象增添了泥在unix下编程的一把利器
 
查找了一下整个unix板精华区,都没有发现有dbx的介绍文档

大概各位大侠都对这个土土的东东都不愿浪费笔墨巴
 
研究了一下午dbx的连机文档,发现dbx很是简单易用
 
现在简单介绍一下dbx的使用方法,让更多的朋友免去独自研究的苦楚
 
dbx
主要用来调试用f77cc等编译工具生成的fortranc语言的源代码
 
当然该程序必须在调试过程中用-g参数包含入调试信息,比方说
 
我在unix下编写了一个hello.c的程序

void hello(); 
main 

 int i,j; 
 i=1; 
 j=2; 
 i=i+1; 
 hello(); 
 printf("%d,%d/n",i,j); 

void hello() 

 printf("hello"); 

先用cc -o helloexe -g hello.c编译生成带调试信息的helloexe文件
 
然后用dbx helloexe来调试该文件
 
显示dbx)这个dbx下调试的提示符
 
现在泥还不处在调试状态下,需要首先进入调试状态

这样泥需要先确定从哪里开始第一次中断,以便以后的跟踪调试
 
这里从第7行开始调试,用命令

dbx)stop at 7 
设置好断点后就开始运行

dbx)run 
这时程序运行到第7行停止下来

并显示下一行将要执行的程序
7: i=i+1 
这时,泥可以用

dbx)print i
命令来查看i变量的值
 
显示
 

或者用printf "%d",i来显示用c语言格式的输出
 
对以后比较负责的数组什么的,
 
dbx)duel i
方式可能更加显示的方便
 
以后
 
泥可以用
 
dbx)step
或者
 step ==trace into 
dbx)next
来执行下一行程序
,next=trace over 
dbx)cont命令可以直接运行到结束

其中控制命令多多,功能十分强大的

查看源码可以用
 
dbx)list begin,end 
就显示hello.c文件中从beginend行的所有程序,并且配上了行号
 
dbx)file <filename>可以改变泥要查看的源码文件名称

enjor it! 

 

 

 

 

下面是查看了 dbx man 手册后对一些常用 / 使用命令的中文说明  
这些命令对普通的调试已经足够了 , 一些多线程的调试命令就不加以介绍了  
dbx
使用指南
1:
实用命令  
quit/q    
退出  
q    
退出  
run arg1 arg2 ...  
用参数运行现有进程  
r    
用上次的参数再次运行  
stop at <line>   
在第 line 行设断点  
stop at <proc>   
在过程 proc 被调用处设断点  
cont <singal>   
继续运行到记号 ( 断点或其他 )  
return     
执行完目前的进程返回  
print <exp> ...   
打印表达式的值  
printf "string",exp,...  
c 语言的格式打印结果  
where    
打印当前调试状态 , 包括当前进程等信息  
func <proc>   
看当前运行进程名 / 移动到调用 proc 进程的母进程处  
file <file>   
查看的文件切换到 file 文件处  
list <exp1>,<exp2>  
file 文件中列出从 exp1 行到 exp2  
list <exp>:<int>  
列出 file 文件中从 exp 行开始的 int  
whatis <variable>  
显示变量的类型  
sh    
崭时进入 sh 状态  
sh <shell command>  
执行一 shell 命令  
2:
常用命令说明  
alias name "string"  
string 内容定义为一缩略语 name 
help section   
寻找某指令的帮助  
playback input <file>  
file 中调入调试命令流  
playback output <file>  
输出 file 中的调试命令流  
record input <file>  
把调试过程输出到 file  
record output <file>  
把命令的运行输出保存到 file  
history    
显示历史命令  
hed    
编辑历史调试命令  
!<int>    
运行历史命令流中第 int 个命令  
!-<int>    
运行历史命令中倒数第 int 个命令  
!<string>   
运行历史命令流中以 string 打头的命令  
!!    
重复上一个命令  
command;command ...  
多调试命令间用 ";" 隔开  
step <int>   
向前追踪 <int> , 进入线程  
next <int>   
向前追踪 <int> , 不进入线程  
delete all   
清所有断点  
listobj    
列出目前使用的 obj 单元  
listregions   
列出被用到的内存区  
enable <int>/disable <int> 
恢复 / 禁用 <int> 号断点  
catch    
显示所有碰到的记号  
cont at <line>   
运行直到 line  
intercept all   
在所有例外处都中断  
bx chat    
在所有出现 char 打头的异常处中断  
kill <pid>   
杀死 pid 线程  
goto <line>   
line 行开始运行  
stop <var>   
var 产生变化时中断  
stop <proc>   
当进入 proc 进程时中断  
stop [var] [at <line>] if <exp> 
条件中断  
trace <var>   
var 变化时输出其原值和新值  
trace <proc>   
当进入进程时打印出母进程和参数  
when if <exp> {command_list} 
当条件为真时执行命令列  
when at <line> [if <exp>] {command_list} 
在遇到 line 行时如果条件为真执行命令列  
duel <exp>   
一种比较好的变量输出方式  
printregs   
输出所有寄存器的值  
status    
当前状态  
/<string>   
向下寻找 file 中的 string 字符串  
?<string>   
向上寻找 file 中的 string 字符串  
set    
设定或显示系统参数值  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值