我想知道如何在目标上调试STACKOVERFLOW问题。 我的意思是我们应该采取什么步骤才能得出结论。
答案 0 :(得分:1)
在堆栈空间末尾放置一个内存写入监视点。然后调试器将在该点被写入时中断,并且您可以看到有什么问题。
答案 1 :(得分:1)
所有堆栈都可以在启动时以某个十六进制值填充(例如0xAAAAAAAAA)。然后使用特殊例程,您可以通过计算堆栈末尾的已知值(0xAA ..)的数量来定期监视所有堆栈的最大使用情况,直到找到第一个差异。
答案 2 :(得分:0)
通过调试器(如gdb)运行它。堆栈溢出时的回溯将告诉您确切地无限重复哪些函数。从那里,找出那些函数的哪些输入没有改变,并且没有将函数(如果它是递归的)移向将结束递归的基本情况。