2013-07-02 4 views
0

Я пытаюсь изучить сборку, и я использую Nasm v2.10.07 для Mac OS X (Snow Leopard). Я могу скомпилировать, но мне нужно прочитать файл Debug, то есть файл .o. Это то, что я компилирую:Nasm на Mac OS X - как скомпилировать и прочитать отладку

global _main 
section.data 
M db 5,4,3,2,1 
dim equ $-M 
section.text 
_main: 
    mov edi, M 
    mov eax, 0 
    mov ebx, 1 
int 80h 

Это, как я компилирую:

nasm -f elf -g -F stabs myfile.asm -o myfile.o 

И это результат:

ELF����������������������@�������4�����(� 
�������������������������������������������������������������������–������������������������������������?��������������������������������0��M��������������������������������Ä��ê���������������"����������������2������������������*��� �����������P�����������������4��������������`��T����������������:��������������¿��������������������C��� �����������–��0���������������ø����∏����ª���ÕÄ�%define $�The Netwide Assembler 0.98.40 (Apple Computer, Inc. build 11)���.text�.comment�.shstrtab�.symtab�.strtab�.rel.text�.stab�.stabstr�.rel.stab��%d����������������������������Òˇ�������������Òˇ������������������������������������������������������Òˇ�������������,�������������myfile.asm�section.data�M�dim�section.text�_main��%define $_%1 ������%define������������d�����������D����������D���������D�� 
�������D� ��������D� 
�����%define $_%�myfile.asm��%de����� �����,�����8�����D�����P����� 

Итак, что нужно сделать, чтобы прочитать в правильный способ отладки без этих странных символов?

+0

Что вы компиляцию для? Mac OS X не использует 'ELF', поэтому существуют ограниченные инструменты для поиска такого файла. –

+1

[Этот вопрос/ответ] (http://stackoverflow.com/questions/3286675/readelf-like-tool-for-mac-os-x) должен быть тем, что вам нужно. –

ответ

1

Чтобы показать содержимое секции .stabs используйте objdump -g myfile.o или objdump -G myfile.o

Чтобы получить полный исходный код с номерами строк, взятых из раздела отладки, используйте objdump -S -l myfile.o

+0

myfile.o: не является объектным файлом – OniTakeda

+1

Это замечание или сообщение об ошибке из 'objdump'? Эти команды работают для меня, но возможно, что ваша версия 'objdump' не распознает файлы ELF. – Michael

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