我试图使一个Python程序接口与不同的崩溃进程(这是我的手)。不幸的是,我正在使用的程序甚至不会可靠地崩溃!所以我想做一个快速的c++程序,它会故意崩溃,但我不知道最好和最短的方法来做到这一点,有人知道在我的
int main() {
crashyCodeGoesHere();
}
使我的c++程序可靠地崩溃
我试图使一个Python程序接口与不同的崩溃进程(这是我的手)。不幸的是,我正在使用的程序甚至不会可靠地崩溃!所以我想做一个快速的c++程序,它会故意崩溃,但我不知道最好和最短的方法来做到这一点,有人知道在我的
int main() {
crashyCodeGoesHere();
}
使我的c++程序可靠地崩溃
当前回答
除以0会导致应用程序崩溃:
int main()
{
return 1 / 0;
}
其他回答
在GCC或clang中使用__builtin_trap(),在MSVC中使用__debugbreak()。不处理这些断点/陷阱将导致未处理的断点异常/崩溃。 使用abort()或exit()的其他建议:这些可能由其他线程处理,使得更难看到传播崩溃的线程的堆栈。
这会在我的Linux系统上崩溃,因为字符串文字存储在只读内存中:
0[""]--;
顺便说一下,g++拒绝编译这个。编译器变得越来越聪明:)
断言(假);也很不错。
根据ISO/IEC 9899:1999,当没有定义NDEBUG时,保证会崩溃:
如果NDEBUG定义为[…]assert宏被简单地定义为 # assert(void)0) assert宏每次被包含时都会根据NDEBUG的当前状态重新定义。 […] assert宏将诊断测试放入程序中;[…if表达式(它应该有一个标量类型)为假[…]。它 然后调用中止函数。
void main()
{
int *aNumber = (int*) malloc(sizeof(int));
int j = 10;
for(int i = 2; i <= j; ++i)
{
aNumber = (int*) realloc(aNumber, sizeof(int) * i);
j += 10;
}
}
希望它崩溃。欢呼。
你可以在c++代码中使用汇编,但是INT 3只适用于x86系统,其他系统可能有其他的陷阱/断点指令。
int main()
{
__asm int 3;
return 0;
}
INT 3导致中断并调用由OS设置的中断向量。