如何监控 page fault

qrlvls 2009-10-13 05:12:46
有什么工具或方法能够记录 page fault 的原因,在拥有私有符号的条件下,能否找出发生页面错误的内存位于哪个内存页面以及该页面的属性(是哪个模块的代码段,或是堆和栈的数据),如何有效地避免发生大量页面错误。

亦或是使用内核调试的方法,由于对内核调试方法不熟悉,希望各位高手不吝赐教
...全文
407 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwsn007 2009-10-14
  • 打赏
  • 举报
回复
呵呵,武林大会么?好多高手,爬树学习
loop_k 2009-10-14
  • 打赏
  • 举报
回复
不懂 帮顶。。
dirdirdir3 2009-10-14
  • 打赏
  • 举报
回复
page fault是源于虚拟内存的信息在硬盘里,这个截获了也需要重载吧.............
哈利路亚1874 2009-10-14
  • 打赏
  • 举报
回复
做个记号!
zhp21 2009-10-14
  • 打赏
  • 举报
回复
GetLastErrorMsg 得到页面错误, 根据错误号得到错误具体信息
0000 操作已成功完成。
0001 错误的函数。
0002 系统找不到指定的文件。
0003 系统找不到指定的路径。
0004 系统无法打开文件。
0005 拒绝访问。
0006 句柄无效。
0007 存储区控制块已损坏。
0008 可用的存储区不足,无法执行该命令。
0009 存储区控制块地址无效。
0010 环境错误。
0011 试图使用不正确的格式加载程序。
0012 访问代码无效。
0013 数据无效。
0014 可用的存储区不足,无法完成该操作。
0015 系统找不到指定的驱动器。
0016 无法删除该目录。
0017 系统无法将文件移到其他磁盘驱动器上。
0018 没有其他文件。
0019 媒体写保护。
0020 系统找不到指定的设备。
0021 设备尚未准备好。
0022 设备无法识别该命令。
0023 数据错误(循环冗余检查)。
0024 程序发出命令,但是该命令的长度错误。
0025 驱动器在磁盘上无法定位指定的区域或磁道。
0026 无法访问指定的磁盘或软盘。
0027 驱动器找不到所请求的扇区。
0028 打印机缺纸。
0029 系统无法写入指定的设备。
0030 系统无法读取指定的设备。
0031 与系统连接的设备不能正常运转。
0032 其他进程正使用该文件,因此现在无法访问。
0033 另一进程已锁定该文件的某一部分,因此现在无法访问。
0034 驱动器中的软盘不正确。请将 %2 (卷标序列号: %3)插入驱动器 %1。
0036 打开共享的文件太多。
0038 已到达文件结尾。
0039 磁盘已满。
0050 不支持此网络请求。
0051 远程计算机无法使用。
0052 网络中存在重名。
0053 找不到网络路径。
0054 网络正忙。
0055 指定的网络资源或设备已不可用。
0056 已经达到网络命令的极限。
0057 网络适配器出现错误。
0058 指定的服务器无法执行所请求的操作。
0059 网络出现意外错误。
0060 远程适配器不兼容。
0061 打印机队列已满。
0062 服务器上没有存储等待打印的文件的空间。
0063 已经删除等候打印的文件。
0064 指定的网络名无法使用。
0065 拒绝访问网络。
0066 网络资源类型错误。
0067 找不到网络名。
0068 已超过本地计算机网络适配器卡的名称极限。
0069 已超过网络 BIOS 会话的极限。
0070 远程服务器已经暂停或者正在启动过程中。
0071 由于该计算机的连接数目已达到上限,此时无法再连接到该远程计算机。
0072 指定的打印机或磁盘设备已经暂停。
0080 该文件存在。
0082 无法创建该目录或文件。
0083 INT 24 失败。
0084 处理该请求的存储区不可用。
0085 正在使用该本地设备名。
0086 指定的网络密码不正确。
0087 参数错误。
0088 网络出现写入错误。
0089 此时系统无法启动其他进程。
0100 无法创建其他系统标志。
0101 属于其他进程的专用标志。
0102 标志已经设置,无法关闭。
0103 无法再次设置该标志。
0104 中断时无法请求专用标志。
0105 此标志先前的所有权已终止。
0106 请将软盘插入驱动器 %1。
0107 后续软盘尚未插入,程序停止。
0108 磁盘正在使用或已由其他进程锁定。
0109 管道已经结束。
0110 系统无法打开指定的设备或文件。
0111 文件名太长。
0112 磁盘空间不足。
0113 没有其他可用的内部文件标识符。
0114 目标内部文件标识符不正确。
0117 该应用程序所运行的 IOCTL 调用不正确。
0118 校验写入的开关参数值不正确。
0119 系统不支持所请求的命令。
0120 该系统上不支持此功能。
0121 标记已超时。
0123 文件名、目录名或卷标语法错误。
0124 系统调用层不正确。
0125 磁盘没有卷标。
0126 找不到指定的模块。
0127 找不到指定的过程。
0128 没有要等候的子进程。
0129 模式下运行。
0130 试图使用操作(而非原始磁盘I/O)的已打开磁盘分区的文件句柄。
0131 试图将文件指针移至文件开头之前。
0132 无法在指定的设备或文件中设置文件指针。
0133 对于包含已连接驱动器的驱动器,不能使用 JOIN 或 SUBST 命令。
0134 试图在已经连接的驱动器上使用 JOIN 或 SUBST 命令。
0135 试图在已经替换的驱动器上使用 JOIN 或 SUBST 命令。
0136 系统试图删除尚未连接的驱动器的 JOIN。
0137 系统试图删除尚未替换的驱动器的替换项。
0138 系统试图将驱动器连接到已连接的驱动器下的目录。
0139 系统试图将驱动器替换成已替换的驱动器下的目录。
0140 系统试图将驱动器连接到已替换的驱动器的一个目录中。
0141 系统试图将驱动器替换成到已连接的驱动器下的目录。
0142 此时系统无法运行 JOIN 或 SUBST。
0143 系统无法将驱动器连接到或替换成同一驱动器下的目录。
0144 此目录不是该根目录的子目录。
0145 该目录未清空。
0146 指定的路径已经在替换中使用。
0147 资源不足,无法执行该命令。
0148 此时无法使用指定的路径。
0149 试图连接或替换某个驱动器目录,该驱动器上的某个目录是上一次替换的目标目录。
0150 CONFIG.SYS 文件未指定系统跟踪信息,或禁止跟踪。
0151 DosMuxSemWait 的指定信号事件的数目不正确。
0152 DosMuxSemWait 没有运行;已经设置太多的标志。
0153 DosMuxSemWait 列表不正确。
0154 输入的卷标超过目标文件系统的标号字符长度极限。
0155 无法创建其他线程。
0156 接收进程拒绝该信号。
0157 已经放弃该区域,因此无法锁定。
0158 该区域已经解除锁定。
0159 线程标识符的地址错误。
0160 传到 DosExecPgm 的参数字符串错误。
0161 指定的路径无效。
0162 信号已挂起。
0164 系统无法创建其他线程。
0167 无法锁定文件的范围。
0170 所要求的资源正在使用中。
0173 锁定请求对于提供的取消区域不重要。
0174 文件系统不支持到锁定类型的自动更改。
0180 系统检测到错误的区域号码。
0182 操作系统无法运行 %1。
0183 不能创建已经存在的文件。
0186 传送的标志不正确。
0187 找不到指定的系统信号名称。
0188 操作系统无法运行 %1。
0189 操作系统无法运行 %1。
0190 操作系统无法运行 %1。
0191 无法在 Win32 模式下运行 %1。
0192 操作系统无法运行 %1。
0193 %1 不是有效的 Win32 应用程序。
0194 操作系统无法运行 %1。
0195 操作系统无法运行 %1。
0196 操作系统无法运行此应用程序。
0197 当前无法配置操作系统运行此应用程序。
0198 操作系统无法运行 %1。
0199 操作系统无法运行此应用程序。
0200 代码段应小于 64K。
0201 操作系统无法运行 %1。
0202 操作系统无法运行 %1。
0203 系统找不到输入的环境选项。
0205 在命令子树中的进程没有信号句柄。
0206 文件名或扩展名太长。
0207 环 2 堆栈正在使用中。
0208 输入的全局文件名字符 * 或 ? 不正确,或指定的全局文件名字符太多。
0209 所发送的信号不正确。
0210 无法设置信号处理程序。
0212 区域已锁定,无法重新分配。
0214 附加到此程序或动态链接模块的动态链接模块太多。
0215 无法嵌套调用 LoadModule。
0216 图像文件 %1 有效,但不适用于本机类型。
0230 管道状态无效。
0231 所有的管道实例都处于忙状态。
0232 管道正在关闭。
0233 在管道的另一端没有进程。
0234 有更多可用的数据。
0240 已取消会话。
0254 指定的扩展属性名无效。
0255 扩展属性不一致。
0258 等待操作过时。
0259 没有其他可用数据。
0266 无法使用复制功能。
0267 目录名无效。
0275 扩展属性不匹配缓冲区。
0276 所装载的文件系统上的扩展属性文件已被损坏。
0277 扩展属性表格文件已满。
0278 指定的扩展属性句柄无效。
0282 安装的文件系统不支持扩展属性。
0288 试图释放不属于调用者的多路同步信号。
MoXiaoRab 2009-10-14
  • 打赏
  • 举报
回复
生成DMP,页错误用WInDBG分析下就看出了
daijunhua 2009-10-14
  • 打赏
  • 举报
回复
使用dbghelp.dll中的函数,配合windbg工具就能完成你说的了
cnzdgs 2009-10-13
  • 打赏
  • 举报
回复
内核调试可以用WinDbg搭配虚拟机进行双机调试。
cnzdgs 2009-10-13
  • 打赏
  • 举报
回复
为何想要记录页故障?页故障在Windows系统中是非常频繁的,凡是程序访问的虚拟地址没有映射物理内存,都会发生页故障。
避免大量页故障主要是减少内存的分配和释放次数,另外注意不要占用过多的物理内存。
YeBinYe 2009-10-13
  • 打赏
  • 举报
回复
我也搬个板凳来听课
雪影 2009-10-13
  • 打赏
  • 举报
回复
sf,搬个板凳来听课

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧