У меня есть консольное приложение, которое использует puTTY в качестве DLL, и мне нужно отладить соответствующую библиотеку puTTY.
В UNIX я бы сделал strace <command>
.
strace ls ggg
Напечатал бы что-то вроде:
stat("ggg", 0x166b0d0) = -1 ENOENT (No such file or directory)
потому что у меня нет файла или каталога с именем ggg
в моем текущем каталоге. Мне это нужно для консольного приложения Windows.
Я искал в Интернете, скачал Windows SDK с инструментами отладки. Я перепробовал несколько программ, мне кажется, что мне нужен cdb
.
делать cdb -o "!htrace -enable" <command>
, как представляется, что мне нужно , но я думаю , что я что - то не хватает, потому что она не дает никакого намека на вопрос, почему команда не удается или не удалось файл открытым попытки. (если <command>
загружает файл , он» если "преуспеть, однако, <command>
хочет имя" сеанса ", а не путь к файлу, она ищет файл или ключ reg с этим именем сеанса):
CommandLine: <command>
Symbol search path is: srv*
Executable search path is:
ModLoad: 00400000 004a7000 image00400000
ModLoad: 77d00000 77e8d000 ntdll.dll
ModLoad: 77aa0000 77b70000 C:\WINDOWS\SysWOW64\KERNEL32.DLL
ModLoad: 748e0000 74ab7000 C:\WINDOWS\SysWOW64\KERNELBASE.dll
ModLoad: 779d0000 77a36000 C:\WINDOWS\SysWOW64\WS2_32.dll
ModLoad: 77b70000 77c2e000 C:\WINDOWS\SysWOW64\RPCRT4.dll
ModLoad: 74720000 74740000 C:\WINDOWS\SysWOW64\SspiCli.dll
ModLoad: 74710000 7471a000 C:\WINDOWS\SysWOW64\CRYPTBASE.dll
ModLoad: 74f00000 74f57000 C:\WINDOWS\SysWOW64\bcryptPrimitives.dll
ModLoad: 75d10000 75d53000 C:\WINDOWS\SysWOW64\sechost.dll
ModLoad: 757c0000 75838000 C:\WINDOWS\SysWOW64\ADVAPI32.dll
ModLoad: 776b0000 7776d000 C:\WINDOWS\SysWOW64\msvcrt.dll
(2f550.32120): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
eax=00000000 ebx=00000010 ecx=44ce0000 edx=00000000 esi=00249000 edi=77d06964
eip=77dadbcf esp=00cafa0c ebp=00cafa38 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!LdrInitShimEngineDynamic+0x6af:
77dadbcf cc int 3
0:000> cdb: Reading initial command '!htrace -enable'
Handle tracing enabled.
Handle tracing information snapshot successfully taken.
0:000>
По сути, я пытаюсь выяснить, откуда pscp.exe (puTTY scp) загружает сеанс в Windows, в данном случае - ответ на этот вопрос не поможет, я хочу знать, как я могу отслеживать дескрипторы, насколько я понимаю, cdb
позволяет htrace
после завершения программы или мне нужно что-то набрать для запуска команды (не уверен), я даже пытался создать новый процесс с опциями без использования отладчика, по-прежнему загружаются только DLL, ничего больше.
Я попробовал logger.exe <command>
и logger.exe -o <command>
как stackoverflow говорит, что он наиболее близок к strace
, в нем перечислены библиотеки DLL, как и в cdb
, и ничего более. В windbg
я вижу 8 файловых дескрипторов, однако информации о путях к файлам нет ...
Извините, я парень из Linux, так что испорченный, strace
без вариантов.
Я прочитал:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-handle https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/cdb-command- Параметры строки https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-a-user-mode-process-using-cdb https://docs.microsoft.com/en- us/windows-hardware/drivers/debugger/-create - create-process- (чтобы попытаться запустить <command>
после загрузки отладчика)... и еще несколько ...