VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1578|回复: 6

[求助] MFC UI运行一段时间后自动关闭,怎么Debug

[复制链接]
09_avatar_middle
online_vip 发表于 2015-9-22 20:44:42 | 显示全部楼层 |阅读模式
用MFC写一个UI,在运行的过程中发现,在执行到调用dll的过程中,发现UI会自动关闭,不知道原因是什么,调用dll的代码如下,求高手给思路,Debug的时候发现dll可以调用,但不知道为什么UI会自动消失,是因为访问非法内存,被操作系统终结调了么?
  1. sDLLDATA* sDllPara = (sDLLDATA*) Param;
  2.         USHORT                        nStatus = NULL;
  3. /*------DLL loader and APIs address etraction [START]------*/

  4.         LogMessage("WINAPI RfTest");
  5.         if (NULL == g_hInstance)
  6.                   g_hInstance = LoadLibrary( sDllPara->szDLL_NAME );        // AF_RfTest_DLL.dll
  7.           ASSERT( g_hInstance );
  8.         LogMessage("g_hInstance=%x",g_hInstance);
  9.         LogMessage("LoadLibrary sDllPara->szDLL_NAME=%s",sDllPara->szDLL_NAME);
  10.        
  11.        
  12.           LpfnSetRftDestinationGuiHandle lpfnSetRftDestinationGuiHandle = (LpfnSetRftDestinationGuiHandle)GetProcAddress(g_hInstance, "exp_set_rft_destination_gui_handle");
  13.           ASSERT( lpfnSetRftDestinationGuiHandle );

  14.           LpfnSetTestPlanDirectoryAndRetriveChecksum lpfnSetTestPlanDirectoryAndRetriveChecksum = (LpfnSetTestPlanDirectoryAndRetriveChecksum)GetProcAddress(g_hInstance, "exp_set_test_plan_directory_and_retrive_checksum");
  15.           ASSERT( lpfnSetTestPlanDirectoryAndRetriveChecksum );
  16.        
  17.           LpfnInitDevice lpfnInitDevice = (LpfnInitDevice)GetProcAddress(g_hInstance, "exp_init_device");
  18.           ASSERT( lpfnInitDevice );
  19.        
  20.           LpfnSetRftDutIsn lpfnSetRftDutIsn = (LpfnSetRftDutIsn)GetProcAddress(g_hInstance, "exp_set_rft_dut_isn");
  21.           ASSERT( lpfnSetRftDutIsn );

  22.           LpfnSetPhoneComPortId lpfnSetPhoneComPortId = (LpfnSetPhoneComPortId)GetProcAddress(g_hInstance, "exp_set_phone_com_port_id");
  23.           ASSERT( lpfnSetPhoneComPortId );

  24.           LpfnStartNonSignalingTest lpfnStartNonSignalingTest = (LpfnStartNonSignalingTest)GetProcAddress(g_hInstance, "exp_start_nonsignaling_test");
  25.           ASSERT( lpfnStartNonSignalingTest );

  26.           LpfnStartAutoSignalingTest lpfnStartAutoSignalingTest = (LpfnStartAutoSignalingTest)GetProcAddress(g_hInstance, "exp_start_auto_signaling_test");
  27.           ASSERT( lpfnStartAutoSignalingTest );

  28.           LpfnStopAutoSignalingTest lpfnStopAutoSignalingTest = (LpfnStopAutoSignalingTest)GetProcAddress(g_hInstance, "exp_stop_auto_signaling_test");
  29.           ASSERT( lpfnStartAutoSignalingTest );
  30.        
  31. /*------DLL loader and APIs address etraction [END]------*/
  32.         Sleep(1000);
  33.         LpfnSetPhoneComPortId fnFnc = (LpfnSetPhoneComPortId) GetProcAddress(g_hInstance, "exp_read_isn_type");
  34.         LogMessage("fnFnc start");
  35.         LogMessage("fnFnc=%x",fnFnc);
  36.         if(fnFnc) (fnFnc)(FALSE);
复制代码




上一篇:Visual C++6.0技术内幕和Visual C++技术内幕是什么关系?
下一篇:MFC check box
51_avatar_middle
online_admins 发表于 2015-9-23 10:13:53 | 显示全部楼层
UI 自动关闭了,进程还在吗?
09_avatar_middle
ico_lz  楼主| 发表于 2015-9-24 21:26:04 | 显示全部楼层
Syc 发表于 2015-9-23 10:13
UI 自动关闭了,进程还在吗?

进程也消失了,就是不知道怎么debug ,希望老大给个思路,
51_avatar_middle
online_admins 发表于 2015-9-24 21:33:47 | 显示全部楼层
wangxiaohu104 发表于 2015-9-24 21:26
进程也消失了,就是不知道怎么debug ,希望老大给个思路,

那就判断下各个函数的返回值吧,看看有什么异常,都写入到文件中,之后软件异常退出了就打开这个文件看看,到底是什么引起的,另外,都用 try-catch 捕获下异常,应该能拦截到点什么东西
09_avatar_middle
ico_lz  楼主| 发表于 2015-9-24 21:56:04 | 显示全部楼层
Syc 发表于 2015-9-24 21:33
那就判断下各个函数的返回值吧,看看有什么异常,都写入到文件中,之后软件异常退出了就打开这个文件看看 ...

if(fnFnc) (fnFnc)(FALSE);
fnFnc的返回值为0 ,load dll得到的句柄g_hInstance=0x10000000,可是就是不知道为什么程序就自动关闭了,程序就执行到这里,老大知道,程序MFC ui 有哪些原因容易导致自动关闭的?
51_avatar_middle
online_admins 发表于 2015-9-24 23:24:54 | 显示全部楼层
wangxiaohu104 发表于 2015-9-24 21:56
if(fnFnc) (fnFnc)(FALSE);
fnFnc的返回值为0 ,load dll得到的句柄g_hInstance=0x10000000,可是就是不 ...

额。。。这个因素太不好判断了,暂时还真不敢说是哪里的问题
09_avatar_middle
ico_lz  楼主| 发表于 2015-9-26 19:27:18 | 显示全部楼层
Syc 发表于 2015-9-24 23:24
额。。。这个因素太不好判断了,暂时还真不敢说是哪里的问题

感谢老大了,我再想想其它办法了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-20 21:15

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表