Как получить возвращаемое значение функции в Windbg?

StackOverflow https://stackoverflow.com/questions/1025804

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь отладить некоторые Win32API, такие как Createthread, который возвращает дескриптор.Как получить возвращаемые значения в Windbg?

Я провел небольшое исследование и обнаружил, что возвращаемые значения обычно хранятся в регистре EAx.

Если я поставлю точку останова на CreateThread, я смогу перейти к сборке Createthread и в конечном итоге нажму оператор ret, что означает, что Createthread возвращается.

На этом этапе мне следует проверить значение регистра EAX, чтобы получить значение HANDLE, или есть другой способ?

Это было полезно?

Решение

Не существует другого способа, который по сути не был бы похож на тестирование eax.

Если вы хотите стать педантичной:

eax отлично работает на 32-битной версии.

rax — это то, что вам нужно для 64-битных приложений

ret0 — это то, что использует Itanium

$retreg — это псевдорегистр, который вы можете использовать и который будет вести себя правильно во всех случаях.

например

0:028> r rax
rax=00000000fff02000
0:028> r eax
eax=fff02000
0:028> r $retreg 
$retreg=00000000fff02000
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top