Вопросы

Как скомпилировать программу C в GCC, чтобы включить отладку в WinDbg?

Я компилирую такой код с помощью GCC (v7.1.0) (командная строка ниже).

int func()
{
    return 0x1234;
}

int main()
{
    func();
    return 0;
}

gcc .\001_simpleMain.c -O0 -m64 -g

После компиляции запускаю WinDbg (10.0), открываю исполняемый файл (Ctrl+E), программа загружается. Точка останова попадает в процесс запуска, все в порядке. После этого я хочу открыть исходный код (Ctrl+O) и попытаться поставить точку останова внутри метода func.

WinDlg говорит мне:

*** ОШИБКА: Загрузка модуля завершена, но не удалось загрузить символы для G:\Examples\Gcc\a.exe

Почему это не работает? Должен ли я изменить параметр компиляции? МОЙ процессор AMD64

Попробуйте использовать gdb (если доступно)   —  person Jacek    schedule 09.06.2017

Clang имеет режим совместимости с Microsoft, который передает отладочную информацию в стиле CodeView в объектные файлы. Если вы затем свяжете их с помощью Microsoft link.exe, у вас будут PDB, необходимые для WinDBG и других отладчиков Windows. Обратите внимание, однако, что режим совместимости Microsoft имеет и другие эффекты. clang.llvm.org/docs/MSVCCompatibility.html   —  person Jacek    schedule 09.06.2017

Читать:
Как использовать указатель функции для возврата указателя функции?

Похожие записи

Conda — ModuleNotFoundError: нет модуля с именем torch

admin

Вносятся ли изменения в .git / hooks / pre-commit часть репо после нажатия? Или они просто присутствуют у меня на пригороде?

admin

Flutter загружает изображение в хранилище firebase, а затем записывает его в хранилище firestore

admin

подключить контейнер UWSGI к контейнеру NGINX [Docker] после развертывания контейнеров в репозиторий AWS

admin

целевая командная строка makefile

admin

Динамически добавлять новые записи WTForms FieldList из пользовательского интерфейса

admin