Chinaunix首页 | 论坛 | 博客
  • 博客访问: 486562
  • 博文数量: 77
  • 博客积分: 1047
  • 博客等级: 少尉
  • 技术积分: 898
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-25 17:16
文章分类

全部博文(77)

文章存档

2016年(2)

2013年(2)

2012年(33)

2011年(40)

分类: 系统运维

2011-10-25 23:10:49

stop 具体用法,很多,说一些生产过程中切实有用的。
stop 子命令
stop { [Variable] [ at SourceLine | in Procedure ] [ if Condition ]}
stop 子命令在满足特定条件时停止应用程序。应用程序将会在下列条件停止:
Condition 值为真,如果使用了 if Condition 标志。  
Procedure 被调用,如果使用了 in Procedure 标志。  
如果指定了 Variable 参数,Variable 发生了改变。  
如果设置了 at SourceLine 标志,就达到了 SourceLine 行。  
SourceLine 变量可以通过一个整数或者代表文件名的字符串后跟 :(冒号)和一个整数的方法指定。
完成任意命令后,dbx 调试程序产生一个消息报告它已作为命令结果产生。该消息包括和您的断点相关的事件的 ID 以及您的命令的解释。解释的语法并不一定和您的命令相同。示例:
stop in main
[1] stop in main
stop at 19 if x == 3
[2] stop at "hello.c":19 if x = 3方括号中的数字是和断点相关的事件的标识符。dbx 调试程序将事件数和每个 stop 子命令联系起来。当一个事件导致程序停止后,事件标识符将与当前行一同显示,以说明导致程序停止的事件。您所创建的事件和由 dbx命令生成的内部事件共存,因此事件号可能不总是顺序的。
使用 status 子命令来查看这些事件号。您可以重定向 status 的输出到一个文件当中。使用 delete 或者 clear 子命令来关闭 stop 子命令。
在多线程应用程序中,所有用户线程都将在任何用户线程遇到断点时停止。在源文件行和函数中设置的断点将会被任何执行该行和该函数的用户线程遇到,除非您按照下述例 9 的方式指定条件。以下别名自动指定条件:
bfth(Function, ThreadNumber)  
blth(SourceLine, ThreadNumber)
ThreadNumber 是线程符号名的数字部分,由 thread 子命令报告(例如,5 是名为 $t5 的线程的 ThreadNumber)。这些别名实际上是宏,它们产生扩展子命令如下:
stopi at &Function    if ($running_thread ==  
ThreadNumber)
stop at SourceLine  if ($running_thread == ThreadNumber)标志
at SourceLine 指定行号。  
if Condition 指定条件,例如真值。  
in Procedure 指定调用的过程。  
示例
要在 main 过程中第一个语句处停止,请输入:  
stop in main当 x 变量的值在第 12 的行执行时改变时要停止执行,请输入:  
stop x at 12要在 sample.c 文件的第五行停止执行,请输入:  
stop at "sample.c":5要在 dbx命令每次运行 func1 的子例程时检查 x 的值,请输入:  
stop in func1 if x = 22要检查dbx 命令每次开始运行 func1 函数时 x 的值,请输入:  
stopi at &func1 if x = 22当改变 Variable 变量的值时要停止程序,请输入:  
stop Variable要随时在 Condition 变为真时停止程序的运行,请输入:  
stop if (x > y) and (x < 2000)以下例子列出了如何显示活动的事件并将它们删除:  
status
[1] stop in main
[2] stop at "hello.c":19 if x = 3
delete 1
status
[2] stop at "hello.c":19 if x = 3
clear 19
status
(dbx) delete 命令用事件标识符删除事件。clear 命令通过行号删除了断点。
要将断点设置在 func1 的开始处,并且只有由线程 $t5 执行时有效,请输入以下等价命令之一:  
stopi at &func1 if ($running_thread == 5)或  
bfth(func1, 5)参见clear 子命令、delete 子命令、stopi 子命令以及 trace 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Setting and Deleting Breakpoints。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11324/showart_55040.html
阅读(2848) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~