Как получить возвращаемое значение из функции в windbg? - PullRequest
4 голосов
/ 22 июня 2009

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

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

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

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

1 Ответ

10 голосов
/ 30 июня 2009

Нет другого способа, который бы не был таким же, как тестирование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...