深入探索系统调试:Windows 控制台子系统与系统调用剖析
1. 调试的价值与策略
调试器不仅可用于查找代码缺陷,还能帮助我们验证和加深对构建软件所使用的组件和技术的理解。通过调试,我们能追踪和调试软件行为,避免将所使用的组件视为完全的黑盒。我们将运用这种方法剖析两个常见的系统机制:向控制台打印文本和向本地磁盘文件写入数据。
2. Windows 控制台子系统
大多数人在大学编程课程中都以“Hello World!”示例入门。然而,系统在后台为将字符串显示到控制台做了大量工作。了解这些内部细节有助于更好地理解控制台应用程序中处理 Ctrl+C 按键组合等机制。
2.1 printf 的奥秘
C 运行时库(CRT)实现的 printf 函数如何将文本渲染到屏幕上是一个值得探讨的问题。显然,像 CRT 这样的独立库无法预先知晓文本在屏幕上的坐标或控制台窗口的大小,必然有其他层参与其中。
2.2 Windows 7 中的控制台主机进程
为了剖析 printf 序列涉及的各层,我们需要减慢该 API 的执行速度,以便检查其内部行为。一个有效的方法是找出因运行实验而启动的所有新进程。这里我们使用 nt!PspInsertProcess 内核断点,每当在目标机器上创建新进程时,就会触发该断点。
操作步骤如下:
1. 在主机内核调试器中添加进程创建断点:
kd> vertarget
Windows 7 Kernel Version 7600 MP (1 procs) Free
超级会员免费看
订阅专栏 解锁全文
2342

被折叠的 条评论
为什么被折叠?



