我有一个在循环中发生的SIGFPE。如果我设置断点或使用stop、nopass等处理SIGFPE,我将释放此行后面的frame变量。在断点的情况下,我需要首先执行n N,其中N是一个很大的数字,这样循环就会在断点上运行,直到发出SIGFPE时出现这样的变量值。在通过处理或断点执行之后,我释放了框架变量,因此我无法反向搜索和进一步调试程序(脱离上下文的变量)。
如何快速处理循环中的SIGFPE?
谢谢!
新信息:可以使用逻辑观察点停止程序吗?我进入了负责任的框架,发现有问题的变量的值是350 (它应该远远小于零)。为什么不
watch x0 > 100是否在此时停止执行?
发布于 2011-07-05 22:33:02
您以错误的方式使用watch。
http://www.ofb.net/gnu/gdb/gdb_30.html#SEC30
watch expr
为表达式设置观察点。当expr被程序写入并且它的值发生变化时,GDB将会中断。
因此,您不能监视x0>100,但可以监视x0或array[59] (监视的参数是内存中的地址)
对于您的任务,您可以使用条件中断。http://www.ofb.net/gnu/gdb/gdb_29.html#SEC29
break ... if cond
使用条件cond设置断点;每次到达断点时都要计算表达式cond,只有在值为非零时才停止--也就是说,如果cond的计算结果为真。`...‘代表上面描述的一个可能的参数(或者没有参数),指定在哪里中断。有关断点条件的详细信息,请参阅节中断条件。
所以
break main.c:345 if x0>100https://stackoverflow.com/questions/6584108
复制相似问题