отладка ассемблера под gdb |платформа Linux - PullRequest
2 голосов
/ 20 октября 2011

Я новичок в отладке ассемблерного кода в gdb. Поэтому у меня возник вопрос:

  • Как я могу запустить мой ассемблерный код (в виртуальном месте) без на самом деле его запуска?
  • Если ему нужно значение, как я могу вставить значение, чтобы увидеть, как оно работает для каждого случая в операторе switch?

    ex: я не смог привести пример сборки, поэтому я привел его в c.

        scanf ( "%d",&y);
        while ( y ) {
             ...
             scanf( "%d", &x);
             switch ( x ) {
    
             case 1: ...
             case 2: ...
             case 3: ...
             }
    
         }
    
  • Если мне нужно, как я могу узнать, какое значение хранится в регистре?

  • Как я могу распечатать все изображения в моем файле .txt? Другими словами, предположим, что я запустил свою программу, и она работает без точки останова, а затем я хочу напечатать это отображение в файл .txt. Итак, я могу работать на бумаге. Как известно, бумага мощнее компьютерной:)

Я знаю, что некоторые из вас скажут: "иди и прочитай учебник или справочную страницу по gdb". Но я не смог найти ни одного хорошего учебника, например, чтобы объяснить, как работает команда. Мой мозг работает только тогда, когда мои глаза видят пример:)

Платформа - Linux Инструмент клеммный / консольный

РЕДАКТИРОВАТЬ: Пожалуйста, дайте мне хороший сайт, включая хорошую документацию, конечно, если вы знаете

Дайте мне документацию "как [ловить] рыбу", "не как есть рыбу"

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Как я могу запустить свой ассемблерный код, не запуская его на самом деле?

Умм, ага, что?!

Если ему нужно значение, какМогу ли я вставить значение, чтобы увидеть, как оно работает для каждого случая в операторе switch?

set whatever = some expression

Помните, что регистры имеют символ $ (например: $eax).

Если мне нужно, как я могу узнать, какое значение хранится в регистре?

Для всех регистров:

info reg

Для определенногозарегистрировать

info reg $eax

или

p $eax

или

p/x $eax

и т. д.

Как распечатать весь дисплейв мой файл .txt?Другими словами, предположим, что я запустил свою программу, и она работает без точки останова, а затем я хочу напечатать это отображение в файл .txt.Итак, я могу работать на бумаге.Как известно, бумага мощнее компьютерной:)

set logging file foobar.out
set logging on
1 голос
/ 20 октября 2011

Посмотрите на эту страницу: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka12961.html - это для сборщика ARM, большинство должно подходить для всех сборщиков.Вы можете установить программный счетчик на нужную инструкцию, поместить значения в регистры, просмотреть регистры, просмотреть память и т. Д. Не распечатывайте его, мы почти не встречаем деревьев.

...