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++本地代码调试

帖子发起人: woodhead   发起时间: 2013-10-14 09:22 上午   回复: 1

Print Search
帖子排序:    
   2013-10-14, 09:22 上午
woodhead 离线,最后访问时间: 2017/1/22 1:14:57 woodhead

发帖数前100位
注册: 2013-02-06
发 贴: 13
请教关于memcpy的一个dump文件
Reply Quote

一个dump文件分析结果如下:

0:067> kbn
 # ChildEBP RetAddr  Args to Child             
00 2081fd8c 0d751dd6 3fb0bbd1 658bacc0 32323131 SPDecV33!LeadUpVec+0xe [f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm @ 233]
01 2081fda8 0d7525de 2081ff00 2081ff54 2081feec SPDecV33!CLS_H264Decoder::CopyYUV+0x26 [f:\windows sdk\windows\decoder\spdecv33\trunk\source\spdecv33\cls_h264decoder.cpp @ 475]
02 2081fddc 0d752f88 30680020 0000076d 0ddc2998 SPDecV33!CLS_H264Decoder::DecodeOneFrame+0x12e [f:\windows sdk\windows\decoder\spdecv33\trunk\source\spdecv33\cls_h264decoder.cpp @ 241]
03 2081fdec 0cc3e06a 00000001 30680020 0000076d SPDecV33!Decode+0x28 [f:\windows sdk\windows\decoder\spdecv33\trunk\source\spdecv33\spdecv33.cpp @ 153]
WARNING: Stack unwind information not available. Following frames may be wrong.

可以看到是memcpy出的错,进入1号栈帧:

0:067> .frame 1
01 2081fda8 0d7525de SPDecV33!CLS_H264Decoder::CopyYUV+0x26 [f:\windows sdk\windows\decoder\spdecv33\trunk\source\spdecv33\cls_h264decoder.cpp @ 475]
0:067> dv
           this = 0x3232312e
0:067> dt this
Local var @ ecx Type CLS_H264Decoder*
   +0x000 __VFN_table : 0x04030002
   +0x008 m_DecHandle      : 0x1c220000 Void
   +0x00c m_attr           : hiH264_DEC_ATTR_S
   +0x030 m_outframe       : hiH264_DEC_FRAME_S
   +0x088 m_hDeinterlace   : 0x213422ff Void
   +0x08c m_bInitDeinterlace : 0
   +0x090 m_iInterlaced    : 0n100883200
   +0x094 m_diFrame        : hiDEINTERLACE_FRAME_S
   +0x0a0 m_bAllocYUVMem   : ffffffffffffffff
   +0x0a4 m_iVideoBufSize  : 0n336003840
   +0x0a8 m_pVideoBuf      : 0x0359ffff  ""
   +0x0ac m_iVideoLen      : 0n-1904344824
   +0x0b0 m_pInStream      : (null)
   +0x0b4 m_pYUV           : (null)
   +0x0b8 m_iVBufPos       : 0n196608
   +0x0bc m_iLoadRet       : 0n838074368
   +0x0c0 m_frmHeader      : S_FrameHeader
   +0x0e0 m_u8AEncodeType  : 0 ''
   +0x0e4 m_decstate       : hiVOICE_G726_STATE
   +0x164 m_pDecAudioBuf   : 0x00030000  "--- memory read error at address 0x00030000 ---"
   +0x168 m_iDecAudioLen   : 0n393216
   +0x16c m_iMaxDecAudioLen : 0n-2077622272
   +0x170 m_ExtraInfo      : OSDINFO
   +0x278 m_blToResetUserData : 1
   +0x279 m_blSwitchACodec : 0
   +0x27c m_u32AFrameHead  : 0x14c80000
   +0x280 m_bNeedReCreateDecoder : 0
   +0x284 m_iImageWidth    : 0n262144
   +0x288 m_iImageHeight   : 0n869007360
   +0x28c m_AACDecoder     : CLS_AACDecoder

Release版本动态库符号(所有编译连接选项为vs2008默认)dv看到的内容准么?我感觉不准,因为memcpy使用的是m_pYUV,dv看到的是NULL

如何继续往下跟踪呢?是源数据访问越界,还是目的地址指向内存太小?


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

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请教关于memcpy的一个dump文件
Reply Quote
在崩溃现场找当时的指令,以及寄存器值,然后看地址的保护属性...
IP 地址: 已记录   报告
高端调试 » 软件调试 » C/C++本地代码调试 » Re: 请教关于memcpy的一个dump文件

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