【问题标题】:How to Escape and Ignore __debugbreak如何逃避和忽略 __debugbreak
【发布时间】:2022-06-29 15:22:57
【问题描述】:

我正在使用 DLLImport 导入硬件公司提供的库,并且我正在 .NET Framework 中编写代码以使用 DLL 提供的 API。

在其中一种方法中,当触发时,Visual Studio 返回“在 XXX.exe 中执行了断点指令(__debugbreak() 语句或类似调用)。”当我处于调试模式时。切换到发布模式时,应用程序崩溃,Visual Studio 会停止执行。

如何避免错误/调试中断,以使应用程序不会触发此错误或者我可以绕过它?

【问题讨论】:

  • 如果他们在他们的 dll 中包含一个无条件的调试中断,他们应该undo 那。
  • 你可能想试试这个技巧:replace int3 with nop 将 debugbreak 替换为 NOP 操作码。

标签: c# .net dll


【解决方案1】:

经过几天的研究,发现错误是由于内存泄漏“0xC0000374:堆已损坏”引起的。

是因为内存泄漏,触发了__debugbreak。 DLL 库所有者确认他们的代码中没有 __debugbreak。

thread 中介绍了有关如何解决内存泄漏的更多信息。

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多