如何使用Application Verifier 4.0测试Delphi应用程序?

mam*_*mcx 5 delphi debugging windows-7 delphi-2010

我下载Application Verifier 4.0以测试我的应用程序以检查Vista/7是否存在问题.

我从Delphi 2010调试器运行,并在CPU视图中停止.显然,我对汇编程序一无所知!

所以,我尝试直接从Windows资源管理器运行,并且应用程序死掉.

(事实上​​,我不明白App Verifier究竟会做什么:我期待某种友好的信息).

这就是我得到的:

7C81A3E2 C3               ret 
7C81A3E3 90               nop 
7C81A3E4 8BFF             mov edi,edi
ntdll.DbgUserBreakPoint:
7C81A3E6 CC               int 3
7C81A3E7 C3               ret 
7C81A3E8 8BFF             mov edi,edi
7C81A3EA 8B442404         mov eax,[esp+$04]
7C81A3EE CC               int 3
7C81A3EF C20400           ret $0004
ntdll.NtCurrentTeb:
7C81A3F2 64A118000000     mov eax, fs:[$00000018]
7C81A3F8 C3               ret 
ntdll.RtlInitString:
7C81A3F9 57               push edi
Run Code Online (Sandbox Code Playgroud)

加载:

:7c81a3e2 ntdll.DbgBreakPoint + 0x1
:10003b68 ; C:\WINDOWS\system32\vrfcore.dll
:00396a9d ; C:\WINDOWS\system32\vfbasics.dll
:00397316 ; C:\WINDOWS\system32\vfbasics.dll
:7c84bcdb ; ntdll.dll
:7c8316f8 ; ntdll.dll
:7c83154f ; ntdll.dll
:7c82855e ntdll.KiUserExceptionDispatcher + 0xe
:0040aa00 GetUILanguages + $80
:0040b298 GetResourceModuleName + $124
:0040afde LoadResourceModule + $7A
:0040a134 DelayLoadResourceModule + $2C
:00406c40 @StartExe + $44
:77e6f23b ; C:\WINDOWS\system32\KERNEL32.dll
Run Code Online (Sandbox Code Playgroud)

Eri*_*own 5

Application Verifier是围绕一堆注册表设置的GUI包装器.

将应用程序添加到Application Verifier时,它会告诉Windows在应用程序运行时进行更多检查.

添加应用程序后,可以关闭Application Verifier; 设置已保存.

现在,无论何时运行应用程序,Windows都会对各种条件进行额外检查(通过Application Verifier指定).

某些检查将导致调用DebugBreak().(这就是您在Windows资源管理器下运行它时应用程序死亡的原因.)

您必须在调试器下运行应用程序,以便可以查看问题发生的位置.

我对Delphi 2010知之甚少; 如果它正在创建托管代码,您可能会遇到问题,因为断点将出现在本机代码中,而调试器(Delphi的调试器)需要能够调试混合的本机/托管代码.


shu*_*nty 0

前几天我尝试了应用程序验证器的各种组合。
32 位版本一直崩溃。然后,在阅读了一些文档后,我发现无论如何运行 32 位版本都是没有意义的,因为 Microsoft 只对 64 位测试的结果感兴趣。32 位仅供您自己参考(并且不起作用!)。
所以我转储了我的 32 位 Win7 虚拟机并创建了一个 64 位 Win 7 VM,安装了 64 位应用程序验证程序,阅读 README(对于我们程序员来说这是一个不寻常的步骤,我同意你:-)),然后打印出 README 'cos这很令人困惑!之后,您按照提示在 64 位操作系统下安装/运行 32 位应用程序。工作正常
......然后您可以修复应用程序验证器报告中的所有警告。