windbg не показывает аргументы стека вызовов - PullRequest
0 голосов
/ 14 октября 2011

Я установил точку останова в kernel32! LoadLibraryExW. В окне вызовов у меня есть переключатели «Исходные аргументы», но стек вызовов все еще не показывает аргументы для LoadLibraryExW, когда он прерывается. Есть ли способ легко просмотреть аргументы?

Я установил для переменной среды _NT_SYMBOL_PATH значение SRV * c: \ symbols *http://msdl.microsoft.com/download/symbols

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Вы не можете напрямую сопоставить аргументы с параметрами функции при переключении Source Args.Они доступны только с частными PDB.Вы должны включить «необработанные аргументы» и привести их в соответствие с документацией MSDN.Если вам нужно более 3 аргументов, вы должны просмотреть память, начиная с esp.Это довольно просто с 32 битами, но это может быть проблемой с 64 битами, потому что аргументы не могут быть фактически записаны в стек (они передаются регистрами и копируются в стек, только если регистры необходимо перезаписать и восстановить),Для получения дополнительной информации вы можете обратиться к http://msdn.microsoft.com/en-us/library/ms235286(v=vs.80).aspx Если у вас есть контроль над исходным кодом, скомпилируйте с флагом / homeparams на компиляторе C, чтобы убедиться, что параметры скопированы в стек для облегчения отладки.

0 голосов
/ 02 августа 2013

В X64 первые четыре целочисленных аргумента заносятся в регистры rcx, rdx, r8 и r9 соответственно. Остальные целочисленные аргументы помещаются в стек.

...