Как отладить проблему переполнения стека на цели - PullRequest
1 голос
/ 05 июня 2010

Я хочу знать, как мы продолжаем отлаживать проблему STACKOVERFLOW для целей. Я имею в виду, какие шаги мы должны сделать, чтобы прийти к выводу.

Ответы [ 3 ]

1 голос
/ 06 июня 2010

Все стеки могут быть заполнены при запуске с определенным шестнадцатеричным значением (например, 0xAAAAAAAA). И затем, используя специальную подпрограмму, вы можете периодически отслеживать максимальное использование всего стека, вычисляя количество известных значений (0xAA ..) от конца стека до тех пор, пока не найдете первую разницу.

1 голос
/ 05 июня 2010

Поместите точку наблюдения записи в память на одно слово после конца вашего стекового пространства. Затем отладчик прекратит работу, когда в это место будет записано, и вы увидите, в чем дело.

0 голосов
/ 05 июня 2010

Запустите его через отладчик, такой как GDB. Обратный след во время переполнения стека скажет вам точно, какая функция или функции повторяются бесконечно. Оттуда выясните, какие входные данные для этих функций не меняются, и не перемещайте функцию (если она рекурсивна) в базовый вариант, который завершит рекурсию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...