标签: debugbreak

是否有一个可移植的等效于DebugBreak()/ __ debugbreak?

在MSVC中,DebugBreak()__debugbreak导致调试器中断.在x86上它相当于写"_asm int 3",在x64上它是不同的东西.在使用gcc(或任何其他标准编译器)进行编译时,我也想进入调试器.是否存在平台无关功能或内在功能?我看到了XCode的问题,但它似乎不够便携.

旁注:我主要想用它来实现ASSERT,我知道我可以使用assert(),但我也想在代码中编写DEBUG_BREAK或其他东西.

c++ portability debugbreak

51
推荐指数
6
解决办法
3万
查看次数

如何在C#中使用debugbreak()?

什么是语法以及需要导入哪个命名空间/类?如果可能,请给我示例代码.这将是非常有帮助的.

c# debugging debugbreak

31
推荐指数
3
解决办法
3万
查看次数

Xcode相当于'__asm int 3/DebugBreak()/ Halt?

什么是导致Xcode难以破解的指令?例如,在Visual Studio下,我可以执行'_asm int 3'或'DebugBreak()'.在一些GCC实现下,它是asm("break 0")或asm("trap").

我在Xcode下尝试了各种组合而没有任何运气.(内联汇编程序工作正常,因此它不是语法问题).

作为参考,这是针对断言宏.我不想在assert.h中使用定义既可移植性,也因为它们似乎在XCode提供的版本中执行了abort().


约翰 - 超级,欢呼.作为参考,int 3语法是Intel Macs和iPhone所需的语法.


Chris - 感谢您的评论,但有很多理由要避免将标准的assert()函数移植到移植到不同平台的代码库.如果您已经解决了滚动自己断言的麻烦,通常是因为您希望保留其他功能(日志记录,堆栈展开,用户交互).

你试图通过'__sert'或类似的实现替换hander的建议不是可移植的.标准'assert'通常是一个宏,虽然它可能映射到Mac上的__assert,但它不在其他平台上.

macos xcode debugbreak

21
推荐指数
3
解决办法
2万
查看次数

在C++中实现断言检查的最佳方法是什么?

我的意思是,我需要做什么才能在我的代码中使用有用的断言?

MFC很简单,我只使用ASSERT(某物).

什么是非MFC方式?

编辑:是否有可能在assert.c中停止断言而不是我的调用assert()的文件?

编辑:<assert.h>&之间有什么区别<cassert>

一般承认的答案:在这篇文章中有很多很棒的答案,我希望我能接受不止一个答案(或者有人将它们全部合并).所以答案会被授予Ferruccio(第一个答案).

c++ debugging assert debugbreak

19
推荐指数
7
解决办法
2万
查看次数

如何禁用程序断点/断言?

我正在使用Visual Studio,开发本机应用程序,我在使用__asm int 3或__debugbreak放置的代码中有一个程序断点(断言).有时当我点击它时,我想禁用它,以便在同一个调试会话中的连续命中不再进入调试器.我怎样才能做到这一点?

debugging x86 assert debugbreak visual-studio

17
推荐指数
1
解决办法
7634
查看次数

在恰当的时间点将调试器附加到VC++中的过程的最佳方法是什么?

在调试时,有时您需要附加已经运行的进程,而不是仅在调试器中启动应用程序.

我自己常常放入Sleep()或MessageBox调用,以便更容易连接调试器.我担心其中一些可能最终会被提交给源代码控制.

在延迟足够时间的同时避免这种情况的最佳方法是什么,以便可以将调试器连接到正在运行的进程?

#ifdef _DEBUG一种方式保护睡眠或消息框,但我想知道是否有更好的方法.

睡眠时,您还有一个问题,即您可能无法及时附着.使用MessageBox,您可能遇到远程调试或调试没有可见GUI的进程的问题(示例在Vista上作为服务运行)

c++ debugging debugbreak visual-c++

8
推荐指数
4
解决办法
1万
查看次数

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

这两个节点控制台和QT5的V8为基础QJSEngine可以通过以下代码崩溃:

a = []; for (;;) { a.push("hello"); }
Run Code Online (Sandbox Code Playgroud)

崩溃前节点的输出:

FATAL ERROR: JS Allocation failed - process out of memory
Run Code Online (Sandbox Code Playgroud)

QJSEngine崩溃前的输出:

#
# Fatal error in JS
# Allocation failed - process out of memory
#
Run Code Online (Sandbox Code Playgroud)

如果我QJSEngine在调试器下运行我的测试应用程序(见下文),它会v8::internal::OS::DebugBreak在V8代码中显示一个调用.如果我换行代码调用QJSEngine::evaluate__try-__except(SEH),然后应用程序不会崩溃,但这种方法是针对Windows的.

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

=== QJSEngine测试代码===

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

QJSEngineTest.pro:

TEMPLATE = app
QT -= gui
QT += core qml
CONFIG -= app_bundle
CONFIG += console …
Run Code Online (Sandbox Code Playgroud)

v8 debugbreak seh node.js qt5

8
推荐指数
1
解决办法
3471
查看次数

Unix/Linux中的DebugBreak?

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

unix debugbreak

5
推荐指数
2
解决办法
4291
查看次数

标签 统计

debugbreak ×8

debugging ×4

c++ ×3

assert ×2

c# ×1

macos ×1

node.js ×1

portability ×1

qt5 ×1

seh ×1

unix ×1

v8 ×1

visual-c++ ×1

visual-studio ×1

x86 ×1

xcode ×1