查找 Class、方法和 WPF Setup/Deployment 错误的行位置

Find Class, Method, and Line Location of WPF Setup/Deployment Error

我正在尝试使用找到的方法 here. The .exe and .msi files can be loaded onto another machine, and the program runs fine on the host machine, but the application can't run due to an error. Using the explanation on another question 部署我的第一个 WPF 应用程序,WER 跟踪指示未找到文件异常:

<ProblemSignatures>
    <EventType>CLR20r3</EventType>
    <Parameter0>TestProgram.exe</Parameter0>
    <Parameter1>1.0.0.0</Parameter1>
    <Parameter2>57421ac1</Parameter2>
    <Parameter3>TestProgram</Parameter3>
    <Parameter4>1.0.0.0</Parameter4>
    <Parameter5>57421ac1</Parameter5>
    <Parameter6>8</Parameter6>
    <Parameter7>1b</Parameter7>
    <Parameter8>System.IO.FileNotFoundException</Parameter8>
</ProblemSignatures>

首先,由于解决方案的非安装项目未设置为 Startup 对象,我尝试将该项目设置为 Startup 对象,重建解决方案及其项目,然后重新部署。

错误仍然存​​在后,我接下来查看安装项目的检测到的依赖项并注意到 Microsoft .NET Framework、EntityFramework.dll、EntityFramework.SqlServer.dll 和 System.Net.Http.dll。我想删除 EF 和 Http dll 文件,因为错误可能是在寻找 Visual Studio,它在目标机器上不可用。

这种解释是否正确,或者是否存在其他任何人都可以发现的问题?该程序未使用 Visual Studio 中包含的软件之外的任何第三方软件。非常感谢!

编辑 1:

我下载了 WinDBG 并在目标机器上打开了可执行文件。在运行和"Go"之前出现了:

Executable search path is: 
ModLoad: 00000000`00eb0000 00000000`00f10000   TestProgram.exe
ModLoad: 00000000`776a0000 00000000`7784a000   ntdll.dll
ModLoad: 00000000`77880000 00000000`77a00000   ntdll32.dll
ModLoad: 00000000`73dc0000 00000000`73dff000   C:\Windows\SYSTEM32\wow64.dll
ModLoad: 00000000`73d60000 00000000`73dbc000   C:\Windows\SYSTEM32\wow64win.dll
ModLoad: 00000000`73d50000 00000000`73d58000   C:\Windows\SYSTEM32\wow64cpu.dll
(151c.15f0): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00000000`77747800 cc              int     3

由于这发生在程序 运行 之前,这是否表示目标机器上缺少程序集 "wow64cpu.dll"?按 "Debug => Go" 后显示:

0:000> g
ModLoad: 00000000`77580000 00000000`7769f000   WOW64_IMAGE_SECTION
ModLoad: 00000000`771e0000 00000000`772f0000   WOW64_IMAGE_SECTION
ModLoad: 00000000`77580000 00000000`7769f000   NOT_AN_IMAGE
ModLoad: 00000000`77480000 00000000`7757a000   NOT_AN_IMAGE
ModLoad: 00000000`73d00000 00000000`73d4a000   C:\Windows\SysWOW64\MSCOREE.DLL
ModLoad: 00000000`771e0000 00000000`772f0000   C:\Windows\syswow64\KERNEL32.dll
ModLoad: 00000000`76af0000 00000000`76b37000   C:\Windows\syswow64\KERNELBASE.dll
(151c.15f0): WOW64 breakpoint - code 4000001f (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
ntdll32!LdrpDoDebuggerBreak+0x2c:
77920e14 cc              int     3

这是否表明 KERNELBASE.dll 是问题代码?出现此错误后按 "Go",应用程序加载并正常运行。有没有人看到治愈这个的方法?

编辑 2:

我已经做了很多研究来了解 WinDBG 并找到有问题的代码,但我仍然无法找到确切的来源。这是将 WinDBG 附加到进程后的故障转储,但我似乎无法在网络上的任何地方找到 DEFAULT_BUCKET_ID 含义或类似内容的任何完整列表:

Loading Dump File [C:\mydump.dmp]
User Mini Dump File with Full Memory: Only application data is available

************* Symbol Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*
Symbol search path is: srv*
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (2 procs) Free x64
Product: WinNt, suite: SingleUserTS
Built by: 6.1.7601.18015 (win7sp1_gdr.121129-1432)
Machine Name:
Debug session time: Tue May 24 09:16:17.000 2016 (UTC - 5:00)
System Uptime: 0 days 21:10:24.768
Process Uptime: 0 days 0:18:49.000
..............................................
This dump file has a breakpoint exception stored in it.
The stored exception information can be accessed via .ecxr.
ntdll!DbgBreakPoint:
00000000`776eae10 cc              int     3


0:004> !analyze -v
*******************************************************************************
*                                                                                 *
*                        Exception Analysis                                       *
*                                                                                 *
*******************************************************************************

*** WARNING: Unable to verify checksum for mscorlib.ni.dll
*** WARNING: Unable to verify checksum for TestProject.exe
*** ERROR: Module load completed but symbols could not be loaded for TestProject.exe

DUMP_CLASS: 2

DUMP_QUALIFIER: 400

CONTEXT:  (.ecxr)
rax=00000000fffaa000 rbx=0000000000000000 rcx=00000000fffdf000
rdx=0000000000000000 rsi=0000000000000000 rdi=0000000000000000
rip=00000000776eae10 rsp=00000000005ffb08 rbp=0000000000000000
 r8=0000000000000000  r9=0000000077792c50 r10=0000000000000000
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei pl zr na po nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000244
ntdll!DbgBreakPoint:
00000000`776eae10 cc              int     3
Resetting default scope

FAULTING_IP: 
ntdll!DbgBreakPoint+0
00000000`776eae10 cc              int     3

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00000000776eae10 (ntdll!DbgBreakPoint)
    ExceptionCode: 80000003 (Break instruction exception)
   ExceptionFlags: 00000000
NumberParameters: 1
   Parameter[0]: 0000000000000000

DEFAULT_BUCKET_ID:  STATUS_BREAKPOINT_NOSOS

PROCESS_NAME:  TestProject.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

EXCEPTION_CODE_STR:  80000003

EXCEPTION_PARAMETER1:  0000000000000000

WATSON_BKT_PROCSTAMP:  4b90752b

WATSON_BKT_PROCVER:  4.0.40305.0

PROCESS_VER_PRODUCT:  Microsoft® .NET Framework

WATSON_BKT_MODULE:  ntdll.dll

WATSON_BKT_MODSTAMP:  5708a857

WATSON_BKT_MODOFFSET:  4ae10

WATSON_BKT_MODVER:  6.1.7601.23418

MODULE_VER_PRODUCT:  Microsoft® Windows® Operating System

BUILD_VERSION_STRING:  6.1.7601.23418 (win7sp1_ldr.160408-2045)

MODLIST_WITH_TSCHKSUM_HASH:  94102de765f4eea4636b2c54fba83facd31885fb

MODLIST_SHA1_HASH:  909c35bf4b61b0a9036f6eafbb05dcb2b73eca6c

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

PRODUCT_TYPE:  1

SUITE_MASK:  272

DUMP_FLAGS:  c07

DUMP_TYPE:  0

APP:  testproject.exe

MISSING_CLR_SYMBOL: 0

ANALYSIS_SESSION_HOST:  JLE-PC

ANALYSIS_SESSION_TIME:  05-24-2016 09:47:17.0337

ANALYSIS_VERSION: 10.0.10586.567 amd64fre

MANAGED_CODE: 1

MANAGED_ENGINE_MODULE:  clr

THREAD_ATTRIBUTES: 
  OS_LOCALE:  ENU

PROBLEM_CLASSES: 

    Tid    [0x0]
    Frame  [0x00]
    String [STATUS_BREAKPOINT]
    Data Bucketing

NOSOS
    Tid    [0xdc0]
    Failure Bucketing

BUGCHECK_STR:  STATUS_BREAKPOINT_NOSOS

PRIMARY_PROBLEM_CLASS:  MANUAL_BREAKIN

STACK_TEXT:  
00000000`005ffb08 00000000`77792c88 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!DbgBreakPoint
00000000`005ffb10 00000000`777023fc : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!DbgUiRemoteBreakin+0x38
00000000`005ffb40 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x25

THREAD_SHA1_HASH_MOD_FUNC:  7022ac660180cc117dbba4701e87bc997be1e021

THREAD_SHA1_HASH_MOD_FUNC_OFFSET:  2758687e8d5375c704a76728e5a036d2024bc4a9

THREAD_SHA1_HASH_MOD:  ec3b5fdb1c6f649ec34d8fd34d70509a58a63226

FOLLOWUP_IP: 
    ntdll!DbgBreakPoint+0
00000000`776eae10 cc              int     3

FAULT_INSTR_CODE:  ccccc3cc

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  ntdll!DbgBreakPoint+0

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: ntdll

IMAGE_NAME:  ntdll.dll

DEBUG_FLR_IMAGE_TIMESTAMP:  5708a857

STACK_COMMAND:  .ecxr ; kb

BUCKET_ID:  MANUAL_BREAKIN

BUCKET_ID_OFFSET:  0

BUCKET_ID_MODULE_STR:  ntdll

BUCKET_ID_MODTIMEDATESTAMP:  5708a73e

BUCKET_ID_MODCHECKSUM:  1422cd

BUCKET_ID_MODVER_STR:  6.1.7601.23418

BUCKET_ID_PREFIX_STR:  MANUAL_BREAKIN

FAILURE_PROBLEM_CLASS:  STATUS_BREAKPOINT_NOSOS

FAILURE_EXCEPTION_CODE:  80000003

FAILURE_IMAGE_NAME:  ntdll.dll

FAILURE_FUNCTION_NAME:  DbgBreakPoint

BUCKET_ID_FUNCTION_STR:  DbgBreakPoint

FAILURE_SYMBOL_NAME:  ntdll.dll!DbgBreakPoint

FAILURE_BUCKET_ID:  STATUS_BREAKPOINT_NOSOS_80000003_ntdll.dll!DbgBreakPoint

WATSON_STAGEONE_URL:  http://watson.microsoft.com/StageOne/TestProject.exe/4.0.40305.0/4b90752b/ntdll.dll/6.1.7601.23418/5708a857/80000003/0004ae10.htm?Retriage=1

TARGET_TIME:  2016-05-24T14:16:17.000Z

OSBUILD:  7601

OSSERVICEPACK:  23418

SERVICEPACK_NUMBER: 0

OS_REVISION: 0

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 7

OSEDITION:  Windows 7 WinNt (Service Pack 1) SingleUserTS

USER_LCID:  0

OSBUILD_TIMESTAMP:  2016-04-09 01:57:39

BUILDDATESTAMP_STR:  160408-2045

BUILDLAB_STR:  win7sp1_ldr

BUILDOSVER_STR:  6.1.7601.23418

ANALYSIS_SESSION_ELAPSED_TIME: 857e

ANALYSIS_SOURCE:  UM

FAILURE_ID_HASH_STRING:  um:status_breakpoint_nosos_80000003_ntdll.dll!dbgbreakpoint

FAILURE_ID_HASH:  {be84a3d9-49dc-a8ad-4a71-89a1a8bdbc50}

Followup:     MachineOwner
---------

这是线程列表:

0:004> ~
   0  Id: dd8.150c Suspend: 1 Teb: 00000000`fffdb000 Unfrozen
   1  Id: dd8.125c Suspend: 1 Teb: 00000000`fffd8000 Unfrozen
   2  Id: dd8.17c4 Suspend: 1 Teb: 00000000`fffd5000 Unfrozen
   3  Id: dd8.15c0 Suspend: 1 Teb: 00000000`fffad000 Unfrozen
   4  Id: dd8.dc0 Suspend: 0 Teb: 00000000`fffaa000 Unfrozen

这是这些线程的调用堆栈,但我仍然不知道从这里去哪里:

0:004> ~*kn

   0  Id: dd8.150c Suspend: 1 Teb: 00000000`fffdb000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000000`0019e908 00000000`73d5283e wow64cpu!CpupSyscallStub+0x9
01 00000000`0019e910 00000000`73dcd286 wow64cpu!WaitForMultipleObjects32+0x3b
02 00000000`0019e9d0 00000000`73dcc69e wow64!RunCpuSimulation+0xa
03 00000000`0019ea20 00000000`776df9b6 wow64!Wow64LdrpInitialize+0x42a
04 00000000`0019ef70 00000000`7773bb89 ntdll!LdrpInitializeProcess+0x17e3
05 00000000`0019f460 00000000`776ca0ee ntdll! ?? ::FNODOBFM::`string'+0x22a30
06 00000000`0019f4d0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   1  Id: dd8.125c Suspend: 1 Teb: 00000000`fffd8000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000000`01f3edd8 00000000`73d5283e wow64cpu!CpupSyscallStub+0x9
01 00000000`01f3ede0 00000000`73dcd286 wow64cpu!WaitForMultipleObjects32+0x3b
02 00000000`01f3eea0 00000000`73dcc69e wow64!RunCpuSimulation+0xa
03 00000000`01f3eef0 00000000`777098dc wow64!Wow64LdrpInitialize+0x42a
04 00000000`01f3f440 00000000`776ca0ee ntdll! ?? ::FNODOBFM::`string'+0x22b74
05 00000000`01f3f4b0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   2  Id: dd8.17c4 Suspend: 1 Teb: 00000000`fffd5000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000000`01fef038 00000000`73d52bf1 wow64cpu!CpupSyscallStub+0x9
01 00000000`01fef040 00000000`73dcd286 wow64cpu!Thunk0ArgReloadState+0x23
02 00000000`01fef100 00000000`73dcc69e wow64!RunCpuSimulation+0xa
03 00000000`01fef150 00000000`777098dc wow64!Wow64LdrpInitialize+0x42a
04 00000000`01fef6a0 00000000`776ca0ee ntdll! ??  ::FNODOBFM::`string'+0x22b74
05 00000000`01fef710 00000000`00000000 ntdll!LdrInitializeThunk+0xe

   3  Id: dd8.15c0 Suspend: 1 Teb: 00000000`fffad000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000000`020de908 00000000`73d5283e wow64cpu!CpupSyscallStub+0x9
01 00000000`020de910 00000000`73dcd286 wow64cpu!WaitForMultipleObjects32+0x3b
02 00000000`020de9d0 00000000`73dcc69e wow64!RunCpuSimulation+0xa
03 00000000`020dea20 00000000`777098dc wow64!Wow64LdrpInitialize+0x42a
04 00000000`020def70 00000000`776ca0ee ntdll! ?? ::FNODOBFM::`string'+0x22b74
05 00000000`020defe0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

#  4  Id: dd8.dc0 Suspend: 0 Teb: 00000000`fffaa000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000000`005ffb08 00000000`77792c88 ntdll!DbgBreakPoint
01 00000000`005ffb10 00000000`777023fc ntdll!DbgUiRemoteBreakin+0x38
02 00000000`005ffb40 00000000`00000000 ntdll!RtlUserThreadStart+0x25

如有任何帮助,我们将不胜感激。我已经花了很多时间研究并且仍在寻找任何会说 "The error is in class [class name] in method [method name] on line x." 当我尝试按照演练 here、WinDBG returns "No [command name] found."

你的转储跟踪信息看起来不太正确,因为你闯入了它,所以堆栈跟踪主要表明中断异常(但我不是 WinDBG 专家)。

了解应用何时崩溃会有所帮助。如果它是即时的,那么它可能是缺少依赖项,Fusion Log Viewer 可能会帮助解决这个问题。还不清楚您的代码是完全托管的还是其中包含任何 C++,这需要目标系统上的 C++ 运行时支持。

此外,您使用什么版本的 Visual Studio 来构建它,您确定目标系统上安装了所需的 .NET FW 吗?