当前位置:首页 > 工业技术
.NET 2.0应用程序调试
.NET 2.0应用程序调试

.NET 2.0应用程序调试PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:(美)JOHN ROBBINS著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121059704
  • 页数:431 页
图书介绍:本书是资深调试专家John Robbins关于调试技术方面的第4本著作。在本书上一个版本——《Microsoft .NET和Windows应用程序调试》的基础上,作者对大部分内容进行了全面的更新。本书删掉了上一版本中的“本机代码的强大工具和技术”部分,剩下了前面的3大部分:“调试概述”、“强大的调试技术”和“强大的工具”。在第1部分中,作者首先介绍了Bug的来源以及调试的基础知识,并在该部分的结尾处,对以往读者提出的一些具有代表性的问题做了一一解答。而后,在第2部分中,作者介绍了Visual Studio 2005在调试方面的新特性,以及如何使用Visual Studio 2005、WinDBG、SOS、ADPlus等进行应用程序调试。最后,在第3部分,作者介绍了如何对Visual Studio的IDE进行扩展,以及如何编写你自己的代码分析规则。本书的最佳读者对象是拥有一定开发经验的中高级开发人员和调试人员。
《.NET 2.0应用程序调试》目录

第1部分 调试概述 1

第1章 Bug的来源与解决的办法 3

第2章 为调试做好准备 31

第3章 边编码边调试 89

第4章 常见的.NET调试问题 151

第2部分 强大的调试技术 197

第5章 Visual Studio调试器高级使用方法 199

第6章 WinDBG、SOS和ADPlus 251

第3部分 强大的调试工具 353

第7章 扩展Visual Studio IDE 355

第8章 编写代码分析规则 385

第1部分 调试概述 1

第1章 Bug的来源与解决的办法 3

1.1 Bug与调试 3

什么是Bug 4

Bug的处理和解决方案 8

制定调试计划 17

1.2 调试的必备条件 18

技能组合 18

学习技能 20

1.3 调试过程 21

步骤1:重现Bug 22

步骤2:描述Bug 23

步骤3:总是假设Bug是因你而起的 24

步骤4:分而治之 24

步骤5:创造性地思考 25

步骤6:利用工具 26

步骤7:开始重度调试 27

步骤8:验证Bug是否已被修正 27

步骤9:学习与分享 29

调试过程中的最后秘密 29

1.4 本章小结 30

第2章 为调试做好准备 31

2.1 跟踪所有改动直至项目结束 31

版本控制系统 32

Bug跟踪系统 36

选择合适的系统 37

2.2 为搭建调试系统安排时间 38

当生成所有的版本时都附带调试符号 38

将编译警告视为错误 41

了解程序集载入的位置 42

在编译时总是打开代码分析功能 47

2.3 务必进行频繁生成和冒烟测试 51

频繁生成 52

冒烟测试 60

2.4 立刻创建安装程序 61

2.5 QA须用调试版本进行测试 62

2.6 建立符号库 62

2.7 安装源代码服务器 73

源代码服务器之禅 74

基础索引 76

用源代码服务器进行调试 82

更好的及更简单的源代码服务器索引 86

2.8 本章小结 88

第3章 边编码边调试 89

3.1 断言、断言、断言,还是断言 90

如何去断言和断言什么 92

.NET中的断言 98

SUPERASSERT.NET 108

3.2 跟踪、跟踪、跟踪,还是跟踪 132

基础跟踪 133

高级跟踪 139

3.3 注释、注释、注释,还是注释 146

3.4 本章小结 149

第4章 常见的.NET调试问题 151

4.1 进程及基础相关问题 151

为什么你必须永远以非管理员账户进行开发 152

调试的秘密何在 155

我应该使用哪种开发方法 156

我们应该进行代码复查吗 157

当重新生成发送给团队以外人员的版本时碰到问题,我们该怎么办 158

有什么其他的C#编译器选项可以在对托管代码进行主动式调试时有帮助 158

在我的生成中应该设置什么CPU 159

我应该在什么时候停止升级编译器和其他工具 160

有什么方法可以在我第一次调试一个程序时加速源服务器 160

ConditionalAttribute是如何工作的 161

你为什么总是把常量放在条件语句的左边 163

.NET二进制的调试和发布版本之间有什么区别 163

4.2 Visual Studio的Bug 165

Visual Studio在我加载某个特定的项目时会发生崩溃,或者当我按下F5时,它不会进行任何调试或命中任何断点。这是怎么回事呢 165

在编辑器中,某个特定的键会突然失效。我尝试了卸载和重新安装,但仍然无法使用该键。我要怎样才能让它重新可用呢 165

调试菜单(或其他主要的UI部分)时发生了什么 165

4.3 调试设计 166

你应该如何实现异常处理 166

如何在我的应用程序中记录未处理的异常 167

什么时候我应该在类中加入一个终结器 169

4.4 调试问题 170

在一个产品系统上我需要一个调试器。我必须为那台机器额外购买一份Visual Studio吗 170

VSHOST是什么 170

你能使用Visual Studio调试SQL存储过程吗 171

你要如何使用Visual Studio调试脚本 172

我怎样才能使用一个不同的代码访问安全级别(Code Access Security,CAS)进行调试 173

4.5 调试场景的问题 177

我怎样调试全局程序集缓存(Global Assembly Cache,GAC)中的程序集 177

如何调试由.NET编写的Windows服务的启动代码 178

我的老板给我发了太多的E-mail,这让我什么也完成不了。有什么方法可以让讨厌的PHB E-mail慢下来吗 180

对于调试死锁你有何策略 181

如何调试设计时可用的程序集?如何调试外接程序 184

如何调试程序集加载的问题 184

我如何在所有未处理异常中获得源和行信息 185

4.6 你使用什么工具 185

来自SysInternals的所有东西 186

Lutz Roeder的Reflector 190

Sells Brothers的RegexDesigner.NET 192

Windows Installer XML(WiX) 192

其他工具 193

4.7 本章小结 195

第2部分 强大的调试技术 197

第5章 Visual Studio调试器高级使用方法 199

5.1 高级断点及其用法 200

断点提示 202

快速中断于任何函数 205

位置断点修饰符 210

5.2 “监视”窗口 219

格式说明符与属性求值 221

创建对象ID 223

数据提示 224

扩展你自己的类型 225

调试器可视化工具 235

在监视窗口家族中调用方法 239

5.3 高级提示与技巧 242

设置下一语句命令 242

混合模式调试 243

调试异常 246

多线程与多进程调试 248

5.4 本章小结 249

第6章 WinDBG、SOS和ADPlus 251

6.1 在你开始前 252

安装 252

参考读物 254

6.2 基础知识 254

符合服务器设置 255

WinDBG选项与窗口 256

处理被调试对象 259

6.3 Command窗口 260

获得帮助 261

确保加载了正确的符号 261

进程与线程 265

遍历本机堆栈 270

异常与事件 273

控制WinDBG的命令 277

转储文件处理 279

极其有用的扩展命令 282

6.4 SOS 291

加载SOS至WinDBG 292

加载SOS至Visual Studio 294

获取帮助与使用命令 294

程序状态与托管线程 296

托管调用堆栈 300

显示对象数据 302

查看GC堆 309

异常与断点 326

死锁 331

其他SOS命令 337

6.5 ADPlus 340

挂起模式 341

崩溃模式 344

在恰当的时候抓拍 349

6.6 本章小结 352

第3部分 强大的调试工具 353

第7章 扩展Visual Studio IDE 355

7.1 使用宏进行扩展 357

宏参数 358

调试宏 359

代码元素 360

CommenTater:普通土豆们的救星 361

更多的宏 368

7.2 Visual Studio外接程序 370

外接程序开发技巧 371

选项页与HiddenSettings外接程序 375

SettingsMaster 377

7.3 本章小结 384

第8章 编写代码分析规则 385

8.1 考虑规则开发 386

8.2 规则开发基础 387

最重要的Check方法 390

8.3 高级规则开发 395

DoNotUseTraceAssertRule和CallAssertMethodsWithMessageParametersRule规则 395

DoNotLockOnPublicFields、DoNotLockOnThisOrMe、DoNotLockOnTypes和DoNotUseMethodImplAttributeWithSynchronized规则 397

AvoidBoxingAndUnboxingInLoops规则 402

ExceptionDocumentationInvalidRule和ExceptionDocumentationMissingRule规则 407

8.4 本章小结 413

索引 415

返回顶部