как отлаживать сборку x86 - PullRequest
       11

как отлаживать сборку x86

1 голос
/ 27 сентября 2010

Я пишу VMM для архитектуры Intel x86. Большая часть кода содержит специфическую для платформы x86 сборку и код c. Может ли кто-нибудь помочь мне, как отладить ассемблерный код, включая структуры данных оборудования.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Использование GDB для отладки хорошо работает для x86, и, если вы хотите, вы можете включить TUI с помощью ключа -tui, если это облегчает задачу.

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

    run                                start program execution
    break function-name                set breakpoint at function-name
    clear function-name                clear breakpoint at function-name
    continue                           continue execution after breakpoint
    si                                 next instruction, enter functions
    ni                                 next instruction, doesn’t enter functions
    disassemble                        function-name display function’s code
    info registers                     display values in registers
    display variable-name              show value of variable-name on breakpoint
    print variable-name                show value of variable-name
       p $register                     or the value of register
       p/x, p/d, p/c, p/f              … as hex, signed int, char, float
    x address                          examine memory at address
    x &variable-name                   examine value of variable-name
1 голос
/ 27 сентября 2010

Если этот VMM должен работать на хосте Windows, вы сможете отладить сборку с помощью Visual Studio.

Если ваша проблема в том, что вы не знакомы с необходимыми аппаратными структурами, такими какVMCS, GDT, LDT, IDT, TSS и т. д., тогда я предлагаю вам потратить время на ознакомление с IA32, особенно с Руководством разработчика программного обеспечения .Это долгое чтение со многими деталями, но я не понимаю, как вы можете написать VMM без него.

...