JSP(JavaServer Pages)技术是当下Web编程领域中的主流技术,它是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP是基于Java Servlet以及整个Java体系的Web编程技术。利用这一技术可以建立先进、安全和跨平台的动态网站。本教材以应用为主,从基本的语法和规范入手,以实例为导向,以实践为指导,深入浅出地讲解如何利用JSP技术创建灵活、安全和健壮的Web站点。书中配有大量的示例代码,由浅入深、循序渐进地讲解了全书15章的内容,其中包括引论、通用HTML、Java语言基础、JSP语法入门、JSP常用对象、JDBC数据库访问、JSP表单处理、JSP实用组
Windows编程调试技术内幕
✍ Scribed by 索拉米
- Publisher
- 人民邮电出版社
- Year
- 2021
- Tongue
- Chinese
- Leaves
- 455
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
这是一本介绍Windows编程调试技术的书.先是简述了Windows开发框架和操作系统中的层.在用调试和跟踪工具发现数据意义时,这些基础知识非常重要.接着谈到了"调试的乐趣和好处",描述了Windows操作系统中调试器的架构,并介绍了一些可扩展的策略,以充分利用Windows的调试器.最后,本书就"观察和分析软件的行为"展开讨论,介绍了Windows事件跟踪(ETW)技术,并说明了在调试和分析调查中利用 ETW 技术的方法.
✦ Table of Contents
封面
书名
版权
前言
目录
第一部分 背景
第1章 Windows软件开发
1.1 Windows发展过程
1.1.1 Windows版本历史
1.1.2支持的CPU架构
1.1.3 Windows版本特性
1.1.4Windows服务术语
1.2 Windows架构
1.2.1内核态与用户态
1.2.2用户态系统进程
1.2.3用户态应用进程
1.2.4低级别的Windows通信机制
1.3 Windows开发人员接口
1.3.1开发人员文档资源
1.3.2 WDM、KMDF和UMDF
1.3.3 NTDLL和USER32层
1.3.4 Win32 API层
1.3.5 COM层
1.3.6 CLR(.NET)层
1.4微软开发工具
1.4.1 Windows驱动程序开发工具包(WDK)
1.4.2 Windows软件开发工具包
1.5小结
第二部分 调试的乐趣和好处
第2章 入门
2.1调试工具介绍
2.1.1获取Windows调试器软件包
2.1.2获取Visual Studio调试器
2.1.3 WinDbg和Visual Studio调试器对比
2.2用户态调试
2.2.1使用WinDbg调试你的第一个程序
2.2.2列举局部变量和函数参数值
2.2.3 WinDbg中的源码级调试
2.2.4符号文件、服务器和本地缓存
2.2.5 WinDbg符号离线缓存
2.2.6 WinDbg中符号解析问题的故障排除
2.2.7名称修饰注意事项
2.2.8获取WinDbg命令的帮助
2.3内核态调试
2.3.1你的第一个(实时)内核态调试会话
2.3.2使用物理机建立一个内核态调试环境
2.3.3使用虚拟机设置内核态调试环境
2.3.4诊断主机/目标机通信问题
2.3.5理解KD中断序列
2.3.6在内核态调试器中控制目标机
2.3.7在内核态调试器中设置代码断点
2.3.8获取WinDbg内核态调试命令的帮助
2.4小结
第3章 Windows调试器是如何工作的
3.1用户态调试
3.1.1架构概述
3.1.2 Win32调试API
3.1.3调试事件和异常
3.1.4中断序列
3.1.5设置代码断点
3.1.6观察WinDbg中的代码断点插入
3.2内核态调试
3.2.1架构概述
3.2.2设置代码断点
3.2.3单步执行目标
3.2.4切换当前进程上下文
3.3托管代码调试
3.3.1架构概述
3.3.2 SOS Windows调试器扩展
3.4脚本调试
3.4.1架构概述
3.4.2在Visual Studio中调试脚本
3.5远程调试
3.5.1架构概述
3.5.2 WinDbg中的远程调试
3.5.3 Visual Studio中的远程调试
3.6小结
第4章 事后调试
4.1实时调试
4.1.1你的第一个实时调试实验
4.1.2实时调试是如何工作的
4.1.3使用Visual Studio作为实时调试器
4.1.4运行时断言和实时调试
4.1.5会话0中实时调试
4.2转储调试
4.2.1用户态转储文件自动生成
4.2.2使用WinDbg调试器分析崩溃转储文件
4.2.3使用Visual Studio分析崩溃转储文件
4.2.4手动生成转储文件
4.2.5“时间旅行”调试
4.2.6内核态事后调试
4.3小结
第5章 基础扩展
5.1非侵入式调试
5.2数据断点
5.2.1深度分析用户态和内核态数据断点
5.2.2清除内核态数据断点
5.2.3执行数据断点与代码断点
5.2.4用户态调试器数据断点操作:C++全局对象和C运行时库
5.2.5内核态调试器数据断点操作:等待进程退出
5.2.6高级例子:谁在修改注册表值
5.3调试器脚本
5.3.1使用调试器脚本重放命令
5.3.2调试器伪寄存器
5.3.3在调试器脚本中解析C++模板名称
5.3.4脚本实践:在内核调试器中列举Windows服务进程
5.4 WOW64调试
5.4.1 WOW64环境
5.4.2 WOW64进程调试
5.5 Windows调试钩子(GFLAGS)
5.5.1系统级与进程相关的NT全局标志
5.5.2 GFLAGS工具
5.5.3调试器扩展命令!gflag
5.5.4用户态调试器对NT全局标志值的影响
5.5.5映像文件执行选项钩子
5.6小结
第6章 代码分析工具
6.1静态代码分析
6.1.1使用VC++静态代码分析捕获你的第一个崩溃错误
6.1.2 SAL注释
6.1.3其他静态分析工具
6.2运行时代码分析
6.2.1使用应用程序验证器工具捕获你的第一个错误
6.2.2幕后花絮:操作系统中支持的校验器
6.2.3调试扩展命令!avrf
6.2.4应用程序校验器作为质量保证工具
6.3小结
第7章 专家调试技巧
7.1基本技巧
7.1.1等待一个调试器附加到目标
7.1.2加载DLL时中断
7.1.3调试进程启动
7.1.4调试子进程
7.2更多有用的技巧
7.2.1调试错误代码故障
7.2.2在第一次异常通知时中断
7.2.3冻结线程
7.3内核态调试技巧
7.3.1在用户态进程创建时中断
7.3.2调试用户态进程启动
7.3.3加载DLL时中断
7.3.4未处理SEH异常时中断
7.3.5冻结线程
7.4小结
第8章 常见调试场景·第1部分
8.1调试非法访问
8.1.1理解内存非法访问
8.1.2调试扩展命令!analyze
8.2调试堆破坏
8.2.1调试本地堆破坏
8.2.2调试托管(GC)堆破坏
8.3调试栈破坏
8.3.1基于栈的缓冲区溢出
8.3.2在栈破坏分析中使用数据断点
8.3.3重构损坏栈的调用帧
8.4调试栈溢出
8.4.1理解栈溢出
8.4.2调试命令kf
8.5调试句柄泄露
8.5.1句柄泄露例子
8.5.2调试扩展命令!htrace
8.6调试用户态内存泄露
8.6.1使用应用程序验证器工具检测资源泄露
8.6.2使用UMDH工具分析内存泄露
8.6.3扩展策略:栈跟踪数据库的自定义引用
8.7调试内核态内存泄露
8.7.1内核内存基础知识
8.7.2使用PoolTagging调查内核态泄露
8.8小结
第9章 常见调试场景·第2部分
9.1调试资源竞争
9.1.1共享状态一致性错误
9.1.2共享状态生命周期管理错误
9.1.3 DLL模块生命周期管理错误
9.2调试死锁
9.2.1(锁顺序)Lock-Ordering死锁
9.2.2逻辑死锁
9.3调试访问检查问题
9.3.1基本的NT安全模型
9.3.2 Windows Vista的改进
9.3.3结束
9.4小结
第10章 调试系统内部机制
10.1 Windows控制台子系统
10.1.1 printf背后的魔力
10.1.2 Windows UI事件的处理
10.1.3 Ctrl+C信号的处理
10.2系统调用剖析
10.2.1用户态一侧的系统调用
10.2.2转换到内核态
10.2.3内核态一侧的系统调用
10.3小结
第三部分 观察和分析软件的行为
第11章 Xperf介绍
11.1获取Xperf
11.2你的第一个Xperf调查
11.2.1制定一个调查策略
11.2.2收集场景的ETW跟踪
11.2.3分析收集到的ETW跟踪
11.3 Xperf的优点和局限性
11.4小结
第12章 ETW内幕
12.1 ETW架构
12.1.1 ETW设计原则
12.1.2 ETW组件
12.1.3特殊的NT内核日志记录会话
12.1.4使用Xperf配置ETW会话
12.2 Windows系统现有的ETW检测
12.2.1 Windows内核中的检测
12.2.2其他Windows组件中的检测
12.3理解ETW的Stack-Walk事件
12.3.1启用和查看内核提供者事件的栈跟踪
12.3.2启用和查看用户提供者事件的栈跟踪
12.3.3诊断ETW栈跟踪问题
12.4在你的代码中添加ETW记录
12.4.1 ETW事件剖析
12.4.2使用ETWWin32 API记录事件
12.5在ETW中跟踪引导过程
12.5.1在引导过程中记录内核提供者事件
12.5.2在引导过程中记录用户提供者事件
12.6小结
第13章 常见的跟踪场景
13.1分析阻塞时间
13.1.1 ETW的CSwitch和ReadyThread事件
13.1.2使用Visual Studio 2010实施等待分析
13.1.3使用Xperf实施等待分析
13.2分析内存使用
13.2.1分析目标进程中高级别的内存使用
13.2.2分析NT堆内存使用
13.2.3分析GC堆(.NET)内存使用
13.3跟踪作为一个调试辅助
13.3.1跟踪错误代码失败
13.3.2跟踪系统内部机制
13.4小结
附录A WinDbg用户态调试快速启动
附录B Windows内核态调试快速启动
封底
📜 SIMILAR VOLUMES
本书是作者结合多年数控编程、数控加工工艺的教学、科研实践经验以及上机实践编写而成。本书通过大量的实例,分模块地阐述了数控编程与数控加工工艺的基本知识和运用。本书内容详实、条理清晰、着重于应用与理论相结合。本书可作为高等工科院校、高等职业技术院校、中专、电大等数控专业编程技术课程工程训练的教材和参考书,也可作为企业数控加工职业技能的培训教材。同时也可以作为数控专业英文课程的辅助参考资料。
本书是作者在多年教学实践与课程改革的经验和总结的基础上编写而成。以移动应用开发平台的原理、实现智能终端普适便携为主线,以提升读者探索兴趣为先导,自顶向下地介绍Android高级编程的核心技术,循序渐进地剖析Android应用开发的实现细节。通过本书的学习,读者能够对移动智能应用APP工作原理与技术有一个系统的、全面的了解,掌握移动应用软件开发的概念、组成和体系结构。本书力求概念准确、论述严谨、内容新颖、图文并茂,非常适合作为Android应用开发的教材。