2009-06-26 2 views
0

У меня есть некоторые сбои в некотором C-коде, построенном без отладочных символов, и у меня есть только обратная трассировка с абсолютными адресами стека вызовов. Это на окнах (64 бит). Я больше похож на linux, поэтому я немного потерял, как заглянуть в отладку этого - в Linux я бы запускал код под valgrind, но AFAIK, такой инструмент не существует для 64-битных окон.Отладка без отладчика

Какие у меня варианты? Я могу изменить код C по своему усмотрению, но я не могу его построить с помощью символов отладки. Причина, по которой я не могу построить с помощью отладочных символов, заключается в том, что мой двоичный файл не создан с помощью инструментов MS (он построен с помощью mingw-w64).

ответ

1

Вам необходимо сгенерировать файл карты. Файл карты перечисляет адреса различных общедоступных символов (функций, глобалов и т. Д.) В исполняемом/двоичном формате. Обычно он может быть сгенерирован с помощью passign на специальном переключателе для компоновщика.

MSDN reference for /MAP

+0

Я не использую компиляторы MS, поэтому я не могу использовать это - я отредактировал мой вопрос, чтобы сделать это яснее –

+0

Какой компилятор вы используете? Файлы карт - это (почти) универсальная концепция. –

+1

Дэвид использует MinGW, и в соответствии с FAQ MinGW он может создавать файлы карт: http://www.cs.colorado.edu/~main/cs1300/doc/mingwfaq.html#debugging – RichieHindle

0

Вы, вероятно, следует использовать версию мирования GDB, который может понять символы, встроенные в двоичной системе.

Смежные вопросы