Как я могу распечатать содержимое стека в программе C?

Я хочу, как говорится в заголовке, распечатать содержимое стека в моем Программа C.

Вот шаги, которые я предпринял:

  • Я создал простой файл сборки (helper.s), который включал функцию для возврата адреса моего регистра ebp и функцию для возврата адреса моего регистра esp

     .globl get_esp
    get_esp:
    movl% esp,% eax
    Ret
    # get_ebp определяется аналогично и включается в раздел .globl
    
  • Я вызвал функции get_esp () и get_ebp () из моей программы на C ( fpC = get_esp (); где fpC - это целое число)
  • ​​Я (думаю, успешно) распечатал адрес моих регистров esp и ebp ( fprintf (stderr, "% x", fcP); )
  • Я пытался, но не смог распечатать содержимое моего реестра esp. (Я пробовал fprintf (sderr, "% d", * fcP); и fprintf (sderr, "% x", * ((int *) fcP)); , среди другие методы). Моя программа обнаруживает ошибку сегментации во время выполнения, когда эта строка обрабатывается.

Что я делаю не так?

РЕДАКТИРОВАТЬ: Это должно быть выполнено путем вызова этих функций сборки для получения указателей стека. EDIT2: это домашнее задание.

5
задан Jens Björnhager 18 December 2012 в 23:32
поделиться