gpt4 book ai didi

c - GDB,继续递归函数,在精确的步数后无法停止

转载 作者:行者123 更新时间:2023-11-30 15:33:26 24 4
gpt4 key购买 nike

有一件尴尬的事情,可能不太好问,但我想听听是否有人有过类似的经历。我正在调试一个巨大的c源代码,我找到了错误发生的地方。它位于递归函数内。

bool interpret(...)
{
switch(..)
....
....
case INSTR_GETLINK:
{
LmnInstrVar linki, atomi, posi;
READ_VAL(LmnInstrVar, instr, linki);
READ_VAL(LmnInstrVar, instr, atomi);
READ_VAL(LmnInstrVar, instr, posi);

warry_set(rc, linki,
LMN_SATOM_GET_LINK(wt(rc, atomi), posi),
LMN_SATOM_GET_ATTR(wt(rc, atomi), posi),
TT_ATOM);

break;
}
....

}

“warry_set”处发生段错误。不好的是错误不会在该行第一次发生,它发生几次后。这个“解释”函数在许多其他地方调用了自己。

我想知道“warry_set”发生了多少步错误。我通过行号在它处设置了断点。我试着找出“继续100”,我改变了很多次数字问题是,有时“Continue 100”报告错误,这让我觉得,错误发生在“warry_set”的 100 时间内。有时会出现100-200之间的错误。我的意思是通过使用 continue ,我无法确定有多少步骤导致错误。我认为通过这种方式找出错误的确切时间是没有问题的。但我只是没有在某个确切的时间发生..

如何找出错误的确切时间?请各位有经验的 friend 给点意见,如果有不对的地方请指正。另外,如何找到“warry_set”定义? “step”没有进入该函数,并且“info function warry_set”没有找到任何内容。 :(“whatis warry_set”说,没有这样的符号,也许我没有加载每个符号。

提前谢谢

最佳答案

虽然您可能能够找到一种方法来设置良好的条件断点,但添加到 warry_set() 将消息写入文件(或控制台)可能会容易得多也许包括它有趣的参数值。

关于c - GDB,继续递归函数,在精确的步数后无法停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com