问题:我把编译生成的.exe直接拷到第二台机子中进行运行,运行一段时间出现软件自动关闭的情况,也没留下一点提示信息的对话框,
  我根据网上查找是要生成Map和pdb文件,我也根据操作进行了设置,设置如下图,再把生成的。exe拷到第二台机子运行(map文件等什么都没拷贝),出现自动关闭软件也没什么信息提示。也就不能用map文件的定位错误了,我是不是还需拷贝什么文件到运行机(如map文件)或程序里要进行什么设置??或者已经自动关闭时生产在C盘的那个文件夹里了运行机子环境:第二台重装xp3的机子,没装什么软件(如VC6),老机子了配置较差。工程设置:使用静态链接库如图搞了好几天,也看来许多帖子资料,但还是觉得比较模糊,请各位多多指教!帮帮忙,再次先感谢了。
看的部分资料:http://www.cppblog.com/Walker/archive/2012/11/08/146153.html
           http://blog.csdn.net/mergerly/article/details/4516168
            http://www.usidcbbs.com/simple/?t5206.html

解决方案 »

  1.   

    生成的的程序如果是静态编译的话,一般都可在别的机子上运行的。
    会不会你生成的还是debug的版本,而非release版本呢?
      

  2.   

    XP系统上,如果没有安装VC,就可以用 drwtsn32.exe 这个系统自带的工具来抓错误信息。
    日志文件 drwtsn32.log 里有错误信息,如错误时间,错误进程、错误位置。
    一般保存在C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson目录里。直接运行 drwtsn32.exe 可以看到配置界面,点[帮助]可以看更多信息。
    运行 drwtsn32.exe -i 将此程序安装为缺省的调试程序。
      

  3.   

    是否是需要其他写日志的类或在程序添加什么语句
    能在别的机子上运行啊,只是在运行的过程会出现自动关闭
    运行 drwtsn32.exe -i了
    根据您的方法查到的相关的错误信息,但得到的错误信息怎么定位到程序,能否指教下,是否是根据错误信息的地址使用内存窗口直接输入地址定位到具体函数代码中,还是要进行其它运算?
      

  4.   

    两个错误日志的部分信息:
    1、
    1、发生应用程序意外错误:
            应用程序: E:\Debug测试\DrawYun\ModbusSComm.exe (pid=996)
            时间: 2013-10-15 @ 16:24:04.500
            意外情况编号: c0000005 (访问侵犯)*----> 系统信息 <----*
            计算机名: PC2013080116CII
            用户名: Administrator
            终端会话 Id: 0
            处理器数量: 1
            处理器类型: x86 Family 15 Model 6 Stepping 5
            Windows 版本: 5.1
            当前内部版本号: 2600
            Service Pack: 3
            当前类型: Uniprocessor Free
            注册的单位: WwW.YLmF.CoM
            注册的所有者: YLmF*----> 任务列表 <----*
       0 System Process
       4 System
     560 smss.exe
     624 csrss.exe
     648 winlogon.exe
     692 services.exe
     704 lsass.exe
     876 svchost.exe
     952 svchost.exe
    1048 svchost.exe
    1144 svchost.exe
    1292 svchost.exe
    1492 Explorer.EXE
    1572 spoolsv.exe
    1696 stsystra.exe
    1724 svchost.exe
    1732 ctfmon.exe
    1768 RtWLan.exe
    1808 2345Safe.exe
    1852 Error 0xD0000022
    1932 2345SafeGuard.exe
     908 alg.exe
     996 Error 0x8007007A
    1372 Error 0x8007007A
    2984 WinRAR.exe
    2492 taskmgr.exe
    2648 Office2003SP3-KB923618-FullFile-CHS.exe
    2700 drwtsn32.exe*----> 模块清单 <----*
    (0000000000400000 - 00000000004c3000: E:\Debug2aê?\DrawYun\ModbusSComm.exe
    (0000000010000000 - 0000000010021000: C:\Program Files\2345Safe\2345SafeMoniter474.dll
    (000000001f840000 - 000000001f857000: C:\WINDOWS\system32\odbcint.dll
    (000000005adc0000 - 000000005adf7000: C:\WINDOWS\system32\uxtheme.dll
    (000000005d170000 - 000000005d20a000: C:\WINDOWS\system32\COMCTL32.dll
    (000000005efe0000 - 000000005eff7000: C:\WINDOWS\system32\OLEPRO32.DLL
    (000000005fdd0000 - 000000005fe25000: C:\WINDOWS\system32\netapi32.dll
    (0000000062c20000 - 0000000062c29000: C:\WINDOWS\system32\LPK.DLL
    (0000000071a90000 - 0000000071aa2000: C:\WINDOWS\system32\MPR.dll
    (0000000071b70000 - 0000000071b83000: C:\WINDOWS\System32\SAMLIB.dll
    (0000000071b90000 - 0000000071b9e000: C:\WINDOWS\System32\ntlanman.dll
    (0000000071c00000 - 0000000071c07000: C:\WINDOWS\System32\NETRAP.dll
    (0000000071c10000 - 0000000071c50000: C:\WINDOWS\System32\NETUI1.dll
    (0000000071c50000 - 0000000071c65000: C:\WINDOWS\System32\NETUI0.dll
    (0000000072f70000 - 0000000072f96000: C:\WINDOWS\system32\WINSPOOL.DRV
    (0000000073250000 - 0000000073255000: C:\WINDOWS\system32\RICHED32.DLL
    (0000000073540000 - 000000007357d000: C:\WINDOWS\system32\ODBC32.dll
    (0000000073640000 - 000000007366e000: C:\WINDOWS\system32\msctfime.ime
    (0000000073ce0000 - 0000000073cf3000: C:\WINDOWS\system32\shgina.dll
    (0000000073fa0000 - 000000007400b000: C:\WINDOWS\system32\USP10.dll
    (0000000074680000 - 00000000746cc000: C:\WINDOWS\system32\MSCTF.dll
    (0000000074c90000 - 0000000074cb0000: C:\WINDOWS\system32\oledlg.dll
    (0000000074d90000 - 0000000074dfd000: C:\WINDOWS\system32\RICHED20.dll
    (00000000758d0000 - 00000000759c1000: C:\WINDOWS\system32\MSGINA.dll
    (00000000759d0000 - 0000000075a7f000: C:\WINDOWS\system32\USERENV.dll
    (0000000075ed0000 - 0000000075ed7000: C:\WINDOWS\System32\drprov.dll
    (0000000075ee0000 - 0000000075eea000: C:\WINDOWS\System32\davclnt.dll
    (0000000075ef0000 - 0000000075fed000: C:\WINDOWS\system32\browseui.dll
    (0000000076060000 - 00000000761b6000: C:\WINDOWS\system32\SETUPAPI.dll
    (00000000762d0000 - 00000000762e0000: C:\WINDOWS\system32\WINSTA.dll
    (0000000076300000 - 000000007631d000: C:\WINDOWS\system32\IMM32.DLL
    (0000000076320000 - 0000000076367000: C:\WINDOWS\system32\comdlg32.dll
    (0000000076570000 - 000000007658c000: C:\WINDOWS\System32\CSCDLL.dll
    (0000000076590000 - 00000000765de000: C:\WINDOWS\System32\cscui.dll
    (0000000076990000 - 0000000076acd000: C:\WINDOWS\system32\ole32.dll
    (0000000076d70000 - 0000000076d92000: C:\WINDOWS\system32\appHelp.dll
    (0000000076fa0000 - 000000007701f000: C:\WINDOWS\system32\CLBCATQ.DLL
    (0000000077020000 - 00000000770ba000: C:\WINDOWS\system32\COMRes.dll
    (00000000770f0000 - 000000007717b000: C:\WINDOWS\system32\OLEAUT32.dll
    (0000000077180000 - 0000000077283000: C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
    (0000000077bd0000 - 0000000077bd8000: C:\WINDOWS\system32\VERSION.dll
    (0000000077be0000 - 0000000077c38000: C:\WINDOWS\system32\msvcrt.dll
    (0000000077d10000 - 0000000077da0000: C:\WINDOWS\system32\USER32.dll
    (0000000077da0000 - 0000000077e49000: C:\WINDOWS\system32\ADVAPI32.dll
    (0000000077e50000 - 0000000077ee2000: C:\WINDOWS\system32\RPCRT4.dll
    (0000000077ef0000 - 0000000077f39000: C:\WINDOWS\system32\GDI32.dll
    (0000000077f40000 - 0000000077fb6000: C:\WINDOWS\system32\SHLWAPI.dll
    (0000000077fc0000 - 0000000077fd1000: C:\WINDOWS\system32\Secur32.dll
    (000000007c800000 - 000000007c91e000: C:\WINDOWS\system32\kernel32.dll
    (000000007c920000 - 000000007c9b6000: C:\WINDOWS\system32\ntdll.dll
    (000000007d590000 - 000000007dd84000: C:\WINDOWS\system32\SHELL32.dll*----> 线程 ID 0x7a0 的状态转储 <----*eax=00000000 ebx=00142fb0 ecx=0012fb70 edx=00ad4ce0 esi=0000000c edi=0012fb70
    eip=00458852 esp=0012e604 ebp=0012e65c iopl=0         nv up ei ng nz na po cy
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000287*** WARNING: Unable to verify checksum for E:\Debug2aê?\DrawYun\ModbusSComm.exe
    *** ERROR: Module load completed but symbols could not be loaded for E:\Debug2aê?\DrawYun\ModbusSComm.exe
    函数: ModbusSComm
            0045883c 50               push    eax
            0045883d 8d45dc           lea     eax,[ebp-0x24]
            00458840 50               push    eax
            00458841 57               push    edi
            00458842 e80efeffff       call    ModbusSComm+0x58655 (00458655)
            00458847 ff7518           push    dword ptr [ebp+0x18]
            0045884a 8b07             mov     eax,[edi]
            0045884c 8bcf             mov     ecx,edi
            0045884e ff7514           push    dword ptr [ebp+0x14]
            00458851 56               push    esi
    错误 ->00458852 ff9098000000     call dword ptr [eax+0x98] ds:0023:00000098=????????
            00458858 81fe10010000     cmp     esi,0x110
            0045885e 894508           mov     [ebp+0x8],eax
            00458861 7543             jnz     ModbusSComm+0x588a6 (004588a6)
            00458863 ff750c           push    dword ptr [ebp+0xc]
            00458866 8d45dc           lea     eax,[ebp-0x24]
            00458869 50               push    eax
            0045886a 57               push    edi
            0045886b e808feffff       call    ModbusSComm+0x58678 (00458678)
            00458870 eb34             jmp     ModbusSComm+0x588a6 (004588a6)
            00458872 e8cee3ffff       call    ModbusSComm+0x56c45 (00456c45)*----> 堆栈反向跟踪 <---*
    WARNING: Stack unwind information not available. Following frames may be wrong.
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\USER32.dll - 
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\ntdll.dll - 
    ChildEBP RetAddr  Args to Child              
    0012e65c 00458a74 0012fb70 00000000 0000000c ModbusSComm+0x58852
    0012e67c 77d18734 001101d4 0000000c 00000000 ModbusSComm+0x58a74
    0012e6a8 77d18816 00458a40 001101d4 0000000c USER32!GetDC+0x6d
    0012e710 77d28ea0 00000000 00458a40 001101d4 USER32!GetDC+0x14f
    0012e764 77d2acd1 0071bf58 0000000c 00000000 USER32!DefWindowProcW+0x180
    0012e794 7c92e473 0012e7a4 00000034 00000034 USER32!MonitorFromPoint+0xdc
    0012e7fc 0045749b 004ab1e8 00000000 00000000 ntdll!KiUserCallbackDispatcher+0x13
    004ab1e8 0000000f 00000000 00000000 06e1d59a ModbusSComm+0x5749b*----> 原始堆栈转储 <----*
    000000000012e604  0c 00 00 00 00 00 00 00 - 00 00 91 01 e4 e6 12 00  ................
    000000000012e614  d4 01 11 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
    000000000012e624  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
    000000000012e634  00 00 00 00 ad 5c 47 00 - 0f 00 00 00 e4 e6 12 00  .....\G.........
    000000000012e644  d4 01 11 00 b0 2f 14 00 - 10 e6 12 00 00 e7 12 00  ...../..........
    000000000012e654  24 9e 48 00 00 00 00 00 - 7c e6 12 00 74 8a 45 00  $.H.....|...t.E.
    000000000012e664  70 fb 12 00 00 00 00 00 - 0c 00 00 00 00 00 00 00  p...............
    000000000012e674  00 00 91 01 40 8a 45 00 - a8 e6 12 00 34 87 d1 77  [email protected]
    000000000012e684  d4 01 11 00 0c 00 00 00 - 00 00 00 00 00 00 91 01  ................
    000000000012e694  40 8a 45 00 cd ab ba dc - 00 00 00 00 e4 e6 12 00  @.E.............
    000000000012e6a4  40 8a 45 00 10 e7 12 00 - 16 88 d1 77 40 8a 45 00  @[email protected].
    000000000012e6b4  d4 01 11 00 0c 00 00 00 - 00 00 00 00 00 00 91 01  ................
    000000000012e6c4  00 00 00 00 d4 01 11 00 - ab ae d2 77 14 00 00 00  ...........w....
    000000000012e6d4  01 00 00 00 00 00 00 00 - 00 00 00 00 10 00 00 00  ................
    000000000012e6e4  00 00 00 00 00 00 00 00 - 01 00 00 00 00 00 00 00  ................
    000000000012e6f4  00 00 00 00 c4 e6 12 00 - 28 e2 12 00 54 e7 12 00  ........(...T...
    000000000012e704  8f 04 d4 77 30 88 d1 77 - 00 00 00 00 64 e7 12 00  ...w0..w....d...
    000000000012e714  a0 8e d2 77 00 00 00 00 - 40 8a 45 00 d4 01 11 00  [email protected].....
    000000000012e724  0c 00 00 00 00 00 00 00 - 00 00 91 01 6c bf 71 00  ............l.q.
    000000000012e734  01 00 00 00 00 00 00 00 - a4 e7 12 00 ab ae d2 77  ...............w*----> 线程 ID 0x460 的状态转储 <----*

    。。
    2、函数: <nosymbols>
    No prior disassembly possible
            :
            00000000 ??               ???
            00000002 ??               ???
            00000004 ??               ???
            00000006 ??               ???
            00000008 ??               ???
            0000000a ??               ???
            0000000c ??               ???
            0000000e ??               ???
    错误 ->:
    00000000 ??               ???
    Error 0x00000001

            00000002 ??               ???
            00000004 ??               ???
            00000006 ??               ???
            00000008 ??               ???
            0000000a ??               ???
            0000000c ??               ???
            0000000e ??               ???
            00000010 ??               ???
            00000012 ??               ???
            00000014 ??               ???
      

  5.   

    利用windbg去分析产生的dump文件。
      

  6.   

    我只找到user.dmp文件,是不是就是dump文件,打开之后
    我运行和编译生成.exe不在同一电脑,会不会有影响??
      

  7.   

    我只找到user.dmp文件,是不是就是dump文件,打开之后
    我运行和编译生成.exe不在同一电脑,会不会有影响??
    用windbg导入你生成的pdb文件,然后打开生成的dmp文件
    ps:运行的exe要是生成的exe相同
      

  8.   

    我只找到user.dmp文件,是不是就是dump文件,打开之后
    我运行和编译生成.exe不在同一电脑,会不会有影响??
    用windbg导入你生成的pdb文件,然后打开生成的dmp文件
    ps:运行的exe要是生成的exe相同
    用windbg导入你生成的pdb文件:是在symbol search path里设置吗??
    我根据下面连接设置之后不会自动打开源文件并定位,奇怪了,使用!Analysis -v命令也没用
    [url=http://;srv*d\symbolslocal*http://msdl.microsoft.com/download/symbols;]
      

  9.   

    http://blog.csdn.net/weiwangchao_/article/details/6838204
      

  10.   

    打开user之后的显示,没有自动定位到源文件,求助怎么定位?
    Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
    Copyright (c) Microsoft Corporation. All rights reserved.
    Loading Dump File [C:\Users\Administrator\Desktop\后台软件测试\错误信息\2013-10-21\Dr Watson\user.dmp]
    User Mini Dump File: Only registers, stack and portions of memory are availableComment: 'Dr. Watson generated MiniDump'
    Symbol search path is: C:\Users\Administrator\Desktop\ModbusSCommD-6(Server)\ModbusSComm\Release;srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols;C:\Users\Administrator\Desktop\后台软件测试\修改\通讯模块\2013-10-15-13-30\Release;srv*d\symbolslocal*http://msdl.microsoft.com/download/symbols
    Executable search path is: 
    Windows XP Version 2600 (Service Pack 3) UP Free x86 compatible
    Product: WinNt, suite: SingleUserTS
    Machine Name:
    Debug session time: Wed Oct 16 17:42:23.000 2013 (GMT+8)
    System Uptime: not available
    Process Uptime: 1 days 0:59:14.000
    ................................
    This dump file has an exception of interest stored in it.
    The stored exception information can be accessed via .ecxr.
    (d68.d30): Access violation - code c0000005 (first/second chance not available)
    eax=0012fb70 ebx=77d2aeab ecx=0012fb70 edx=00020301 esi=0013018c edi=004ab1e8
    eip=00000000 esp=0012e7e8 ebp=004ab1e8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
    00000000 ??              ???
      

  11.   


    修改VC6 release bulid 选项:
      编译 -> Debug info: None(这样将只生成FPO),也可以选择 Line Numbers Only, C7, PDB(这样将生成FPO, line)
      链结 -> Debug info: COFF format, 由于打开了 /debug, 因此要手工增加 /opt:ref,icf 选项。拷贝新的exe和pdb到测试环境,运行exe,等待错误发生...
      

  12.   

    有了pdb,下面这些就会对应到你的源代码的函数0012e65c 00458a74 0012fb70 00000000 0000000c ModbusSComm+0x58852
    0012e67c 77d18734 001101d4 0000000c 00000000 ModbusSComm+0x58a74
    0012e6a8 77d18816 00458a40 001101d4 0000000c USER32!GetDC+0x6d
    0012e710 77d28ea0 00000000 00458a40 001101d4 USER32!GetDC+0x14f
    0012e764 77d2acd1 0071bf58 0000000c 00000000 USER32!DefWindowProcW+0x180
    0012e794 7c92e473 0012e7a4 00000034 00000034 USER32!MonitorFromPoint+0xdc
    0012e7fc 0045749b 004ab1e8 00000000 00000000 ntdll!KiUserCallbackDispatcher+0x13
    004ab1e8 0000000f 00000000 00000000 06e1d59a ModbusSComm+0x5749b
      

  13.   

    我在windug的只有在call stack的窗口中的一条双击才能跳到我对应的CModbusSCommApp : public CWinApp类成员函数中,(如下图)这是不是也算定位成功了
      注:dmp文件对应的错误为错误 ->:
    00000000 ??               ???
    Error 0x00000001
    可能跳到系统文件才没有显示(vs2010打开dmp文件 其中Exception Code 是0xC0000005)
    现在的dmp文件是最后时间错误的文件(6楼日志中的第2部分),把前面一个(6楼日志中的第1部分)给覆盖了不知这种涉及系统文件的错误,自己的却只能定位到app类成员函数中的改怎么下手??
      

  14.   

    现在崩溃的源头已经找到,http://blog.csdn.net/nokianasty/article/details/8504432在这连接中文章的最后面“如何找到崩溃的源头:“两种方法可实现
    居然定位在系统文件,使用call stack也在CModbusSCommApp::Initstance(),
      

  15.   

      总结:使用WinDbg调试定位时,有时的错误定位在系统文件,导致在运行时没有直接定位到你的源文件中,这时你可以通过Call  Stack定位到你的源文件中。
      我定位在系统文件,使用call stack也在CModbusSCommApp::Initstance(), 这都是类向导生成的,最后也不知怎么解决。