2010-06-05 52 views
1

我想知道我们如何继续调试目标上的STACKOVERFLOW问题。 我的意思是我们应该遵循什么步骤才能得出结论。如何调试目标上的stackoverflow问题

+0

你是什么意思“目标”?我们需要更多信息。 – 2010-06-05 18:12:32

+0

我把目标,使其通用...但我的问题是ARM 7,9处理器。 假设我有Lauterback和trace32可用 – dara 2010-06-05 18:15:06

回答

1

在堆栈空间末尾放置一个字的内存写入观察点。然后调试器将在该位置写入时中断,并且您可以看到有什么问题。

+0

这看起来像一个不错的选择,会尝试这个 – dara 2010-06-11 13:36:14

0

通过调试器(如gdb)运行它。在堆栈溢出时的回溯会准确地告诉你哪个或哪些函数无限期地重复。从那里,找出那些函数的哪些输入不会改变,并且不会将函数(如果是递归的)移动到将会结束递归的基本情况。

1

所有堆栈都可以在启动时用某个十六进制值填充(例如0xAAAAAAAA)。然后使用特殊的例程,您可以通过计算堆栈末尾的已知值(0xAA ..)的数量,定期监视所有堆栈的最大使用情况,直到找到第一个差异。