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

《软件调试》的示例程序

帖子发起人: icommander   发起时间: 2009-07-30 10:15 上午   回复: 2

Print Search
帖子排序:    
   2009-07-30, 10:15 上午
icommander 离线,最后访问时间: 2016/1/11 1:01:38 icommander

发帖数前75位
注册: 2009-07-28
发 贴: 18
22.4.2 函数 FuncB
Reply Quote

1.清单22-8 FuncB中的szTemp没有显式用'\0'结尾。于是第5行的printf可能显示更长的字符串。

2.用esp寻址在vc2008,gcc中不可见。但可以通过下面的方式手工来验证。

__declspec(naked) void FuncB(char* szPara)

{

      char szTemp[5]={0};      <-下断点,检查esp+4是否等于szPara

      strncpy(szTemp, szPara,sizeof(szTemp)-1);

}


IP 地址: 已记录   报告
   2009-07-30, 22:49 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 22.4.2 函数 FuncB
Reply Quote
第一点的意见很好。
第二点主要是用来演示FPO的情况,书中以VC6的发布版本为例,使用VC2005编译发布版本也会使用FPO,如果VC2008下禁止了FPO,那么可以尝试在函数前增加:
#pragma optimize( "y", on )

IP 地址: 已记录   报告
   2009-07-31, 09:13 上午
icommander 离线,最后访问时间: 2016/1/11 1:01:38 icommander

发帖数前75位
注册: 2009-07-28
发 贴: 18
Re: 22.4.2 函数 FuncB
Reply Quote
明白了,我又学了一招。一会试一下。
IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》的示例程序 » Re: 22.4.2 函数 FuncB

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