我正在使用 Wine (Eudora) 在 Linux 中调试 Windows 应用程序,WINEDEBUGGER=+relay
用于创建 API 调用的(相当大量的)日志。现在我已经发现了问题所在,我想在本机窗口(嗯,实际上是 VirtualBox)中运行相同的应用程序,所以看看它的行为方式并比较差异(如果有的话)。
我知道有几个 Windows 工具可以跟踪 API 调用,但我需要一个可以生成与 wine 相同类型的日志的工具,所以我可以使用相同的工作流程:
配置记录器/跟踪器以排除给定的函数列表(如
KERNEL32.SetLastError; KERNEL32.GetLastError; KERNEL32.FlsGetValue; ntdll.RtlEnterCriticalSection; ntdll.RtlLeaveCriticalSection
,相当于 Wine 的注册表项。这是至关重要的,因为它是 30MB 日志文件和 1.3 GB日志文件之间的Debug\RelayExclude
区别必须跟踪所有其他调用,无论库/模块/dll/什么。它们不能按模块排序或过滤,因为调用的顺序对我来说至关重要(所以我可以回溯而不迷路)
像启动跟踪器一样容易
tracer c:\ProgramFiles\Eudora\Eudora.exe 2> hugelogfile.txt
它启动 Eudora,我执行我的操作,然后关闭 Eudora。
当 Eudora 终止时,Tracer 停止。日志已经准备好让我玩了。
这是 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
您能否向我推荐一个免费的、易于下载的软件,可以做到这一点,最重要的是,关于如何使用建议的软件实现此工作流程的确切说明?
谢谢!