首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gdb:循环中的SIGFPE

gdb:循环中的SIGFPE
EN

Stack Overflow用户
提问于 2011-07-05 22:13:51
回答 1查看 443关注 0票数 2

我有一个在循环中发生的SIGFPE。如果我设置断点或使用stop、nopass等处理SIGFPE,我将释放此行后面的frame变量。在断点的情况下,我需要首先执行n N,其中N是一个很大的数字,这样循环就会在断点上运行,直到发出SIGFPE时出现这样的变量值。在通过处理或断点执行之后,我释放了框架变量,因此我无法反向搜索和进一步调试程序(脱离上下文的变量)。

如何快速处理循环中的SIGFPE?

谢谢!

新信息:可以使用逻辑观察点停止程序吗?我进入了负责任的框架,发现有问题的变量的值是350 (它应该远远小于零)。为什么不

代码语言:javascript
复制
watch x0 > 100

是否在此时停止执行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-05 22:33:02

您以错误的方式使用watch

http://www.ofb.net/gnu/gdb/gdb_30.html#SEC30

watch expr

为表达式设置观察点。当expr被程序写入并且它的值发生变化时,GDB将会中断。

因此,您不能监视x0>100,但可以监视x0array[59] (监视的参数是内存中的地址)

对于您的任务,您可以使用条件中断。http://www.ofb.net/gnu/gdb/gdb_29.html#SEC29

break ... if cond

使用条件cond设置断点;每次到达断点时都要计算表达式cond,只有在值为非零时才停止--也就是说,如果cond的计算结果为真。`...‘代表上面描述的一个可能的参数(或者没有参数),指定在哪里中断。有关断点条件的详细信息,请参阅节中断条件。

所以

代码语言:javascript
复制
break main.c:345 if x0>100
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6584108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档