-1

我一直在写一个多元素扩散的程序。因为我使用的方法在 MatLab 中没有得到很好的优化,所以我一直在用 C 编程,因为这对我的目的来说很快。然而,我更像是一名工程师而不是程序员。该模型包含许多功能,并且我已经针对预期输入分别测试了每个功能。但是,现在一切都在一起了,我的程序卡住了。最有可能在(许多)while 循环之一中。如果我能找到它卡在哪个循环中,我可以查看它是否输入错误,或者我是否在测试期间错过了循环本身的错误。如果它只是循环几次,我可以在每个循环中添加一个打印语句,但由于它迭代了几百万到十亿次以上,这将行不通。如果我尝试只用几百次迭代来运行它,问题不会发生。我希望在 IDE 中有一个选项可以查看当前正在执行的函数,但我在我正在使用的函数(Pelles C)中找不到它。

Pelles C 中是否有一个选项(或者如果在另一个 IDE 中没有)显示哪个功能当前处于活动状态?还是有其他方法可以找到卡住的地方?我一直试图让调试器告诉我它卡在哪里,但即使它给了我很多关于我不知道的事情的信息,它似乎并没有告诉我我想知道什么。

4

1 回答 1

1

使用 -g 标志编译程序并使用 gdb` 运行它

gdb ./test

每当卡住时,在 gdb 的命令行中运行“where”或“bt”,以找到卡住的确切行。还放 -Wall 标志,它将显示所有警告。

于 2020-12-21T09:26:34.233 回答