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

WinDbg

帖子发起人: Forward   发起时间: 2011-02-16 09:17 上午   回复: 1

Print Search
帖子排序:    
   2011-02-16, 09:17 上午
wbdwbd04 离线,最后访问时间: 2011/6/7 7:59:42 Forward

发帖数前25位
注册: 2009-12-23
发 贴: 50
SetUnhandledExceptionFilter(handler)函数
Reply Quote

在MSDN中讲到过SetUnhandledExceptionFilter这个函数,它是用来设置一个进程的顶端异常处理。

我在程序中使用这个函数运行程序发现,这个函数的确起作用了。但是我在异常链表中为什么没有查找到它的地址呢??

>u UEF!handler

00401000 UEF!handler = <no type information>

>!teb

TEB at 7ffdf000
    ExceptionList:        0012ffb0

>dd 0012ffb0 l2

0012ffb0  0012ffe0 004027a8

>dd 0012ffe0 l2

0012ffe0  ffffffff 7c839a88

>ln 004027a8

(004027a8)   UEF!_except_handler3   |  (00402865)   UEF!_seh_longjmp_unwind

>ln 7c839a88

(7c839a88)   kernel32!_except_handler3   |  (7c839b6e)   kernel32!_seh_longjmp_unwind

 

源代码如下。

#include "stdafx.h"

long WINAPI handler(EXCEPTION_POINTERS* lpExceptionInfo) //
{
 printf("Exception handled!\n");

 return EXCEPTION_EXECUTE_HANDLER;
}

int main(int argc,char* argv[])
{
 printf("Going to assign value to null pointer!\n");

 SetUnhandledExceptionFilter(handler);
 
  *(int*)0 = 1;

 return 0;
}


IP 地址: 已记录   报告
   2011-02-16, 11:49 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: SetUnhandledExceptionFilter(handler)函数
Reply Quote
顶层过滤函数是记录在全局变量中的,不在FS:0链条中
IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » Re: SetUnhandledExceptionFilter(handler)函数

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