Контрольные точки отладчика не работают
Я пытаюсь настроить Insight Debug на 64-битной системе виртуальных машин rhel6: uname -a Linux lb-cam-bca-devel 2.6.32-358.23.2.el6.x86_64 #1 SMP Sat 14 сентября 05:32:37 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
Я скачал источник - insight-6.8-1a.tar.bz2, полученный с ftp://sourceware.org/pub/insight/releases, настроил, собрал и установил.
Я могу понять, но когда я пытаюсь установить контрольные точки, они не получают удар.
Вот что я попробовал: 1) Установите точку останова, щелкнув мышью на виде сборки и выбрав Run из GUI. Исполняемый файл доходит до конца. Выходные данные в представлении консоли: "Программа завершилась нормально".
2) Установите точку останова, щелкнув мышью по исходному коду и выбрав Run из GUI. Окна Insight все исчезают (вылетает?). Выход "Ошибка сегментации" на клемму.
3) Удалите контрольные точки по умолчанию из GUI и установите контрольную точку из командной строки GDB в окне консоли. Введите r для запуска. Окна Insight все исчезают (вылетает?). Выход "Ошибка сегментации" на клемму.
Если я просто запускаю GDB из терминала, я могу установить точки останова и пройти через исходный файл.
Файл, который я отлаживаю, представляет собой простой asm-скрипт, взятый из книги (Assembly Language Step By Step).
Команды, которые я использую для создания файла: nasm -f elf64 -g -F dwarf eatsyscall.asm ld -o eatsyscall eatsyscall.o
Команда, которую я использую, чтобы открыть понимание: insight eatsyscall
Кто-нибудь знает, что здесь происходит? Или кто-нибудь может предложить, как я могу отладить проблему? Я немного застрял на этом в данный момент.
Ближайшее, что я видел в сети, сообщило об этом: здесь osdir.com/ml/debugging.insight/2008-09/msg00001.html
Но в моем случае нет общих библиотек.
1 ответ
У меня была та же проблема, чтобы решить использовать dwarf в качестве формата отладочной информации, т.е. собрать код (если используется nasm) как
nasm -f elf -g -F dwarf anyfile.asm
(формат -g
по умолчанию установлено "stabs", но gdb лучше понимает dwarf, вы можете изменить его с помощью -F
переключатель)
Теперь свяжите объектный код как (если используете компоновщик GNU)
ld -o executable_name anyfile.o
с dwarf в качестве формата отладки теперь вы можете установить точки останова.