Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

C/C++本地代码调试

帖子发起人: jonnystill7   发起时间: 2012-06-30 21:05 下午   回复: 2

Print Search
帖子排序:    
   2012-06-30, 21:05 下午
jonnystill7 离线,最后访问时间: 2012/6/30 12:16:56 jonnystill7

发帖数前500位
注册: 2009-07-23
发 贴: 2
c服务程序运行崩溃的诡异问题
Reply Quote
先描述一下问题情景吧:

c编写了一个程序,在两台终端间进行socket通信,程序里面包括较多的多线程和socket处理,这个程序支持控制台方式双击运行,也支持以服务程序的方式后台启动,同时这个程序在内部处理过程中需要调用到第三方提供的一个DLL动态库,在调试过程中为了压力测试,设置了会话寿命,每隔30秒,两台终端间就会重新建立socket连接。

当两台终端都是winxp(sp3)时,不管是用控制台方式还是服务方式启动,运行起来都没有问题。

但是当一台终端是winxp(sp3),一台终端是winxp(sp2)时,该程序在sp2机器上运行时,以控制台方式启动运行正常,但当以服务方式运行的时候,第一次建立socket连接时没有问题,30秒寿命一过,第二次重连时,程序就崩溃,弹出的错误窗口中说调用的那个第三方动态库中读取了非法地址。

目前可以肯定的是第三方动态库肯定没有问题,但不知道我的程序是怎样触发这个问题的。

尝试用windbg附加到进程中去调试,可是程序崩溃的时候windbg显示的调用堆栈信息已经是在第三方动态库里面了,貌似跟我的程序无关了。。。。

张老师能不能给提供一点分析解决的思路?


IP 地址: 已记录   报告
   2012-07-01, 10:42 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: c服务程序运行崩溃的诡异问题
Reply Quote

建议看一下你调用的是哪个接口函数,仔细检查一下传递的参数,必要的话和DLL的提供者沟通一下,看是否存在误解;如果确认调用参数和调用条件没有问题,那么可以让DLL提供者做更多分析...


IP 地址: 已记录   报告
   2012-07-01, 14:04 下午
jonnystill7 离线,最后访问时间: 2012/6/30 12:16:56 jonnystill7

发帖数前500位
注册: 2009-07-23
发 贴: 2
Re: c服务程序运行崩溃的诡异问题
Reply Quote
谢谢张老师,我再试试。
IP 地址: 已记录   报告
高端调试 » 软件调试 » C/C++本地代码调试 » Re: c服务程序运行崩溃的诡异问题

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.