问题标签 [debugbreak]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1013 浏览

debugging - __debugbreak statement not triggering breakpoint

In my visual C++ code I have introduced a __debugbreak statement for triggering a breakpoint. I have compiled the project with /CLR option. But it does not trigger a breakpoint during execution. Why does this happen? Please help before I shoot myself. This in on 64 bit executable.

Edit: I tried with DebugBreak() statement now and it is now hanging forever, not sure at which statement. The dll is used by a server program, which I'm accessing from a client on a different machine. Is this what is causing the problem? Should I be running it from the server machine itself? I expected it to atleast report a message about a breakpoint being triggered, even if it could not successfully launch the debugger session on the client machine. The .pdb file is avaialable on the server at the same location as the dll.

Update: I just tried ran the client program on the server machine itself, but still the DebugBreak() causes an infinite hanging. The debugger session does not get launched.

0 投票
2 回答
5902 浏览

unix - Unix/Linux 中的 DebugBreak?

我们在 Unix/Linux 中是否有类似的 DebugBreak Windows API。我想调试一个在执行 DebugBreak 语句时应该打开 NetBeans 的守护进程。提前致谢。

0 投票
0 回答
3097 浏览

c++ - 无法在 win7 64 位上使用 __asm int 3 或 DebugBreak 或 __debugbreak() 进行调试

我无法使用 _asm int 3 启动 Visual Studio 2008 调试或者_debugbreak()DebugBreak()。我正在尝试通过嵌入“__asm int 3;”来调试 C++ DLL 在其中,构建项目并将生成的 dll 替换为由 exe 启动的dll。我无法从 Visual Studio 2008 本身启动该 exe,因为该 exe 是由另一个程序启动的,我无法控制。我有 Windows 7 64 位。请帮忙。

0 投票
1 回答
277 浏览

c++ - VS2010 远程调试器在没有断点的地方停止

我正在远程调试 Microsoft FSX 的 dll(C++,非托管)(我不知道这是否重要)。该 dll 被编译为“多线程 dll”,因为它不能作为“多线程 dll 调试”工作。我的 dll 目前只包含一个DllStartandDllStop函数,这是 FSX 中的标准。

我一般调试工作(它停止在我的断点处),但不知何故,调试器也停止在我没有放置断点的地方。首先,问题出现在“没有可用来源”的风格中。检查后

  1. 在 2010
  2. 无可用来源

对我有用的唯一解决方案是安装提到的扩展。现在我不再获得“无源”选项卡,但调试器仍然在我的代码之外的某个地方停止。我已经按照“没有断点 VS2010 时调试器停止”中的建议清理了所有断点。 在 VS2010 中停止 bglmanx.dll是另一个 dll,也是由 FSX 启动的。我在想,好吧,也许这些符号有些模棱两可,并将我的函数重命名为DllStartFSXMand DllStopFSXM(因此是唯一的)。没提升。

任何想法,提示?

0 投票
1 回答
4475 浏览

node.js - 进程内存不足时如何处理V8引擎崩溃

节点控制台和基于 Qt5 的 V8都QJSEngine可以通过以下代码崩溃:

节点崩溃前的输出:

QJSEngine崩溃前的输出:

如果我在调试器下运行我的QJSEngine测试应用程序(见下文),它会v8::internal::OS::DebugBreak在 V8 代码中显示调用。如果我将调用代码包装QJSEngine::evaluate__try-__except( SEH ) 中,则应用程序不会崩溃,但此解决方案是特定于 Windows 的。

问题:有没有v8::internal::OS::DebugBreak办法在节点和 Qt 应用程序中以独立于平台的方式进行处理?

=== QJSEngine 测试代码 ===

开发环境:带有 Qt5 和 Windows SDK 7.1 的 QtCreator,在 Windows XP SP3 上

QJSEngineTest.pro:

没有 SEH 的 main.cpp(这会崩溃):

带有 SEH 的 main.cpp(这不会崩溃,输出“致命异常”):

0 投票
1 回答
2250 浏览

c++ - 如何附加到加载我的 DLL 并调试它的进程

基本上,我正在开发一个第三方软件将使用的 DLL(一个开放接口)。我想在这个第三方 DLL 加载我的 DLL 后对其进行调试,因为我发现了一个特定的错误,只有当我的 DLL 被这个第三方软件加载时才会发生(我的 DLL 对于接受这个开放接口的所有其他软件都可以正常工作)

我在我的代码 DLL 中设置了 __debugbreak() 并运行第三方软件。一个 Visual Studio 对话框确实跳了出来,询问我是否要调试。但是在我单击“确定”之后,Visual Studio 没有进入显示我设置断点的代码行的 Visual Studio 窗口,而是崩溃了。

我发现第三方软件加载了我的 DLL 并在另一个线程中运行它。我怀疑这是第三方软件崩溃的原因,因为有效地 __debugbreak() 在主线程启动的线程中抛出了一个未捕获的执行。

在这种情况下,我该如何调试我的 DLL?

0 投票
0 回答
303 浏览

c++ - __debugbreak 挂在后台线程上

我正在尝试调试需要数百万次运行才能重现的粗糙线程问题(在 Windows 上的 C++ 代码中)。“printf 调试”没有给我足够的信息,所以我想在我检测到问题的第一点闯入调试器。

我一直在使用 __debugbreak() 来执行此操作,但是当在后台线程上调用它并且尚未附加调试器时,它会挂起。当它挂起时,我可以附加调试器,我会看到其中一个线程在该调用上被阻塞。

这似乎是一个可行的解决方法,但我想确定这是预期的行为。在谷歌搜索时我似乎找不到任何参考,这让我怀疑我忽略了一些东西。

有人知道这方面的章节和经文吗?

[更新] 实际上我是否看到对话框似乎很随机。更糟糕的是,就像随机的 - 但独立 - __debugbreak() 不会阻塞线程并且在我可以附加进程之前进程已经退出(无论是手动还是从调试对话框))。

0 投票
1 回答
126 浏览

c++ - 为什么在删除对象时获取 DebugBreak()

我有一个 MFC 对话框,称为Dlg1

这个对话框有一个名为 A 的父对话框;我在 A 中有一个函数,在关闭时调用:

如果我Dlg1通过单击关闭按钮手动关闭对话框,然后关闭主对话框A,那么一切都很好,没问题。但是,如果Dlg1正在运行并且我关闭 A,那么我会得到DebugBreak(). 这个问题只在debug模式下出现,在release模式下没问题。

0 投票
1 回答
417 浏览

c++ - 将 INT3 中断留给 Visual Studio 上的应用程序异常处理程序

我实际上正在开发一个注入到进程中的 DLL。这个 DLL 在可执行文件的代码周围设置了几个 INT3 中断,这被调用了很多。我的 DLL 的异常处理程序捕获那些 INT3 以更改几个寄存器值和类似的东西,然后它恢复进程以便它可以继续工作。

问题是:当我需要调试 DLL(通过在 Visual Studio 中启动应用程序)时,所有这些 INT3 都由 Visual Studio 处理。有没有办法告诉 Visual Studio 将这些异常传递给应用程序的(dll)异常处理程序?

重要笔记:

  • 我无法禁用这些 INT3,因为当这些异常发生时(在处理程序上),实际的 dll 代码就会发生。
  • 可执行文件已编译。我没有源代码。

谢谢

0 投票
1 回答
74 浏览

sharpdevelop - SharpDevelop 和 DebugBreak(F12 键)

在 Delphi 中,每当我的程序对主线程在做什么没有反应时,我习惯于按 F12,主要用于堆栈跟踪,但有时也用于本地变量。

现在我正在玩 SharpDevelop 并且看不到任何类似的东西。有可能吗?