seh相关内容

WinPhone8 是否完全支持 ARM(不是 Thumb)?

我遇到了一个奇怪的问题,有点类似于 这个.我有一个 Windows Phone 8 本机 DLL 项目,主要是 C++,但其中包含 ARM 程序集源.源处于 ARM 模式(即不是 Thumb).C++ 编译为 Thumb. 当 C++ 尝试调用汇编例程时,应用程序崩溃.反汇编中的调用命令是带有立即偏移量的 BLX - 它应该无条件地将模式切换回 ARM,但不知何故它没有. 我有异常的详 ..
发布时间:2022-01-17 13:55:40 其他开发

WndProc 中的 64 位异常静默失败

以下代码在 Windows 7 32 位下运行时会出现硬故障: void CTestView::OnDraw(CDC*/*pDC*/){*(int*)0 = 0;//碰撞CTestDoc* pDoc = GetDocument();断言有效(pDoc);如果(!pDoc)返回;//TODO: 在此处添加原生数据的绘制代码} 但是,如果我在 64 位 Windows 7 上尝试这个,我只会在输出 ..
发布时间:2021-11-25 06:32:44 C/C++开发

WinPhone8 完全支持 ARM(不是 Thumb)吗?

我面临一个奇怪的问题,有点类似于 这个.我有一个 Windows Phone 8 本机 DLL 项目,主要是 C++,但里面有一个 ARM 程序集源代码.源处于 ARM 模式(即不是 Thumb).C++ 编译为 Thumb. 当 C++ 尝试调用汇编例程时,应用程序崩溃.反汇编中的调用命令是带有立即偏移量的 BLX - 它应该无条件地将模式切换回 ARM,但不知何故它没有. 我有异常 ..
发布时间:2021-11-17 21:49:21 其他开发

Windows32 API:“mov edi,edi"在函数入口?

我正在逐步完成 Windows 7 中的结构化错误处理恢复代码(例如,在 SEH 处理程序完成并传回“CONTINUE"代码后会发生什么).这是一个被调用的函数: 7783BD9F mov edi,edi7783BDA1 推 ebp7783BDA2 mov ebp,esp7783BDA4推17783BDA6 推双字 ptr [ebp+0Ch]7783BDA9 推双字 ptr [ebp+8]77 ..
发布时间:2021-09-25 20:32:24 其他开发

将 Win32 SEH 与堆分配的堆栈帧混合使用

有没有办法在不削弱 SEH 的情况下摆脱 Win32 的“一大堆"模型?我希望能够在堆上分配堆栈帧,作为实现协程的一种方式.但是,我的代码目前依赖于 SEH,以及这篇文章,向下几页,说(与异常处理程序的遍历、扫描、强调我的有关): 在这个链遍历过程中,操作系统对损坏的堆栈非常偏执.它检查所有链条目是否在堆栈范围内.(这些界限也记录在 TEB 中).操作系统还会检查堆栈中的所有条目是否按升序. ..
发布时间:2021-09-25 19:07:16 其他开发

如何将 Win32 异常代码转换为字符串?

我不情愿地不得不再次处理 Win32 结构化异常.我正在尝试生成一个描述异常的字符串.大部分都很简单,但我坚持一些基本的东西:如何转换异常代码(GetExceptionCode() 的结果,或ExceptionCode 的成员EXCEPTION_RECORD) 转换为描述异常的字符串? 我正在寻找可以将例如 0xC0000005 转换为“访问冲突"的内容.只是调用 FormatMessage ..
发布时间:2021-09-25 18:53:02 其他开发

Visual Studio 2010 中的编程数据断点

我一直在尝试使用程序化数据断点,就像 CBreakpoint 示例,通过使用 SetThreadContext 直接设置调试寄存器.我能找到的大多数引用都表明 Visual Studio 在遇到数据断点时仍会中断,即使它本身没有设置该数据断点.但是,这似乎不是 Visual Studio 2010 的工作方式. 我的数据断点在程序未被调试时完美运行(它因 STATUS_SINGLE_STEP ..
发布时间:2021-09-18 20:45:19 其他开发

当进程内存不足时如何处理 V8 引擎崩溃

node 控制台和 Qt5 基于 V8 的 QJSEngine 可以通过以下代码崩溃: a = [];for (;;) { a.push("你好");} 节点崩溃前的输出: 致命错误:JS 分配失败 - 进程内存不足 QJSEngine 崩溃前的输出: ## JS 中的致命错误# 分配失败 - 进程内存不足# 如果我在调试器下运行我的 QJSEngine 测试应用程序(见下文),它 ..
发布时间:2021-06-30 18:34:52 其他开发

在Visual Studio 2010中混合使用异常处理模型有什么后果?

我有一个内置的第三方静态库,其中Enable C++ Exceptions设置为否(未指定/EH标志).从启用C ++异常(/EHa)构建的代码中调用它会有什么后果?如果从库中引发了结构化异常,是否可以可靠地调用主应用程序提供给_set_se_translator的函数? (我的实验表明这样做会,但是只是想知道这是否是定义的行为). 混合/EH异常处理模型时还有其他考虑事项吗? 解决方 ..
发布时间:2020-07-27 05:01:12 C/C++开发

捕获操作码0xCC作为异常

说C程序可能会触发操作码 0xCC 的异常?如何捕获它? 我尝试过: __ try { ...一些代码 } __except(GetExceptionCode()== EXCEPTION_EXECUTE_HANDLER) { _tprintf(_T(“ Error\n”),i) ; 返回0; } 这对我不起作用。我究竟做错了什 ..
发布时间:2020-06-11 00:04:57 其他开发

在什么情况下我需要为x86-64汇编功能设置SEH展开信息?

64位Windows ABI定义了一种通用的例外处理机制,我认为即使在其他语言(例如C)中,C ++异常和可用的结构化异常也可以共享这些信息. 如果我正在编写要在nasm中编译并链接到C或C ++库的x86-64汇编例程,那么在生成展开信息等方面我需要在Windows上进行哪些调节? 我不打算直接在汇编代码中生成任何异常,尽管我认为如果用户提供的缓冲区无效,则该代码可能会出现访问冲突. ..
发布时间:2020-05-16 21:04:38 其他开发

如何在使用SEH时解释GetExceptionCode结果?

我一直在尝试写一些错误保护条款来识别由第三方提供给我们的dll中的问题。在这个dll中可能会有问题(内存异常,浮点错误等),并且能够识别这些错误而无需访问源代码是有利的。 我从各种SEH错误处理例程中汇集了一些东西,但是虽然它起作用,但是它有一些不一致的地方。我试图隔离每一个,我要单独提出一个问题。 这一个是用GetExceptionCode,用在SEH __try / __除了用来标 ..
发布时间:2017-12-21 22:19:18 C/C++开发

混合c ++异常处理和SEH(窗口)

我有一个函数,我调用 getaddrinfo()获取一个 sockaddr * 哪个目标内存被分配由系统。 许多人知道,你需要调用$ code freeaddrinfo()来释放由getaddrinfo()分配的内存。 现在,在我的函数中,有几个地方,我可能会抛出一个异常,因为一些函数失败。 我的第一个解决方案是将 freeaddrinfo()并入每个if-block。 但是对我而言看 ..
发布时间:2017-10-01 15:33:11 C/C++开发

关于C ++中的结构化异常(SEH)应该知道什么?

解决方案 他们是Win32等效于Unix信号,让您捕获CPU异常,例如访问冲突,非法指令,除以零。 使用正确的编译器选项(/ Visual C ++的EHa),C ++异常使用相同作为堆栈展开的机制适用于C ++(用户)异常和SEH(OS)异常。 与C ++异常不同,SEH不是键入的,但都共享相同的数据结构它有一个异常代码(原因)以及关于什么代码故障以及在发生故障时保持的CPU寄存器 ..

在C ++ Builder中启用安全异常处理

对于Windows 8应用程序认证,有(以及其他)这些要求: 3.2您的应用程序必须使用 / SafeSEH 标志以确保安全的异常处理 3.3您的应用程序必须使用 / NXCOMPAT 标志以防止数据执行 3.4您的应用程序必须使用 / DYNAMICBASE 标记进行编译,用于地址空间布局随机化(ASLR ) 我无法找到如何在C ++ Builder XE中启用其中的任何一个。 ..
发布时间:2017-04-28 19:50:52 Delphi

模板函数接受带有X参数的可调用函子

我在写一个托管的C ++程序,运行用户编写的C代码。绝对重要的是,某些典型的异常从C代码捕获并被处理/忽略。 为此,我从结构化异常处理块中调用C代码。由于这个块的性质和语义(和它从哪里调用),我已经分离了它自己的函数的实际调用: template static ret_type Cstate :: RunProtected ..
发布时间:2016-11-02 01:13:17 C/C++开发