Я отлаживаю Windows-приложение в Linux, используя wine (Eudora), используя WINEDEBUGGER=+relay
для создания (довольно массивного) журнала вызовов API.Теперь, когда я обнаружил, в чем проблема, я хочу запустить одно и то же приложение в собственных окнах (ну, фактически, VirtualBox), поэтому посмотрите, как оно себя ведет, и сравните различия (если есть).
Я знаюЕсть несколько инструментов Windows, которые могут отслеживать вызовы API, но мне нужен инструмент, который может генерировать тот же тип журнала, что и Wine, поэтому я могу использовать тот же рабочий процесс:
Настройка регистратора/ tracer для исключения заданного списка функций (как в KERNEL32.SetLastError; KERNEL32.GetLastError; KERNEL32.FlsGetValue; ntdll.RtlEnterCriticalSection; ntdll.RtlLeaveCriticalSection
, что эквивалентно записи реестра Debug\RelayExclude
в Wine. Это очень важно, так как разница между журналом 30 МБ и 1,3 ГБ one
Все другие вызовы должны отслеживаться независимо от библиотеки / модуля / dll / чего угодно. Они должны не быть отсортированы или отфильтрованы по модулю, посколькупорядок выполнения звонков для меня очень важен (поэтому я могу вернуться и не потеряться)
Запустить трассировщик так же просто, как tracer c:\ProgramFiles\Eudora\Eudora.exe 2> hugelogfile.txt
Он запускает Eudora, я выполняю свои действия и закрываюse Eudora.
Трассер останавливается, когда завершается Eudora.Журнал готов для меня поиграть.
Вот фрагмент журнала Wine, если он помогает (желательно подобный формат):
0009:Call advapi32.RegQueryValueW(80000000,0033b5dc L".txt",0033b9a0,0033bbac) ret=7e9a6c7a
0009:Ret advapi32.RegQueryValueW() retval=00000000 ret=7e9a6c7a
0009:Call advapi32.RegOpenKeyExW(80000000,0033b9a0 L"txtfile",00000000,02000000,0033a528) ret=7e9a3b66
0009:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7e9a3b66
0009:Call advapi32.RegCloseKey(000000d4) ret=7e9a3bbc
0009:Ret advapi32.RegCloseKey() retval=00000000 ret=7e9a3bbc
0009:Call advapi32.RegQueryValueW(80000000,0033b9a0 L"txtfile\\shell\\\\command",0033ada0,0033a52c) ret=7e9a3c04
0009:Ret advapi32.RegQueryValueW() retval=00000002 ret=7e9a3c04
0009:Call shlwapi.PathIsDirectoryW(0033e464 L"D:\\Arquivos\\Email\\attach\\carro.txt") ret=7e9a8a26
0009:Call KERNEL32.GetFileAttributesW(0033e464 L"D:\\Arquivos\\Email\\attach\\carro.txt") ret=7eb47738
0009:Ret KERNEL32.GetFileAttributesW() retval=00000020 ret=7eb47738
0009:Ret shlwapi.PathIsDirectoryW() retval=00000000 ret=7e9a8a26
0009:Call shlwapi.PathIsURLW(0033e464 L"D:\\Arquivos\\Email\\attach\\carro.txt") ret=7e9a8e68
0009:Ret shlwapi.PathIsURLW() retval=00000000 ret=7e9a8e68
0009:Call user32.LoadStringW(7e950000,000000a4,0033abb0,00000800) ret=7e9a3ac2
0009:Ret user32.LoadStringW() retval=00000041 ret=7e9a3ac2
0009:Call user32.MessageBoxW(000100c4,0033abb0 L"There is no Windows program configured to open this type of file.",00000000,00000010) ret=7e9a3a84
Можетпожалуйста, предложите мне бесплатное, легко загружаемое программное обеспечение, которое может сделать это, и, самое важное, точные инструкции о том, как добиться этого рабочего процесса, предлагаемое программное обеспечение ?
Спасибо!