草庐IT

Terminate

全部标签

Java 程序意外终止,没有任何错误消息

我编写了一个java程序,它需要处理数千个文本文件(所有这些都需要加载到内存中)。它可以很好地处理多达123个输入文件,但是当我运行它来处理大约5000个文件时,它在路中间意外终止,没有给出任何错误消息/异常。谁能告诉我可能出了什么问题?我在具有2GBRAM的MacOSLeopard上使用jdk1.6。 最佳答案 鉴于这是您的程序,我建议您执行以下操作:首先,更改main方法,使所有事情都在报告所有未捕获异常的try/catchblock中完成;例如像这样:publicstaticvoidmain(String[]arghhhhh)

c++ - C++ 中的信号 : using a member function

我在使用signal()时遇到了这个问题:这段代码编译得很好:#include#include#includevoidterminate(intparam){printf("Terminatingprogram...\n");exit(1);}intmain(){signal(SIGTERM,terminate);return0;}但是,下面的代码会抛出这个错误:g++-Wall-c-ggoober.cppgoober.cpp:Inmemberfunction`voidGOOBER::yarrgh()':goober.cpp:5:error:argumentoftype`void(GO

c++ - 如何检测是否安装了自定义 terminate() 处理程序?

我的代码使用VisualC++编译为WindowsDLL。我想在调用terminate()时记录极少数情况,因此我在库初始化函数中设置了我的terminate()处理程序,后者由用户代码调用在使用我的图书馆之前。我的处理程序写入日志并调用abort()模拟默认的terminate()行为。问题是用户代码也可能用C++编写并使用完全相同的C++运行时版本,因此与我的库共享terminate()处理程序。该代码可能还想更改terminate()处理程序以进行日志记录。所以他们会调用set_terminate(),然后加载并初始化我的库,我的库也会调用set_terminate()并覆盖他们

python - PySide QThread.terminate() 导致致命的 python 错误

我使用的是PySide1.2.2版,它封装了Qtv4.8框架。我处于这样一种情况,我必须在让我的应用程序等待我不再需要正常退出的QThread之间做出选择(线程很可能会无限期地阻塞),并给出无响应线程一个宽限期(几秒钟),然后在其上调用QThread.terminate()。虽然我希望我可以,但我不能让QThread对象在底层线程仍在运行时超出范围,因为这将抛出错误“QThread:线程仍在运行时被破坏”并且几乎​​可以肯定导致段错误。请注意,我知道terminatingQThreadsisdangerousandhighlydiscouraged.我只是想在这里探索我的选择。然而,当

c++ - 在这个简单的场景中是否可能出现死锁?

请看下面的代码:std::mutexmutex;std::condition_variablecv;std::atomicterminate;//Workerthreadroutinevoidwork(){while(!terminate){{std::unique_locklg{mutex};cv.wait(lg);//Dosomething}//Dosomething}}//Thisfunctioniscalledfromthemainthreadvoidterminate_worker(){terminate=true;cv.notify_all();worker_thread.

c++ - 当我什至无法进入代码时如何调试 "This application has requested the Runtime to terminate it in an unusual way."?

我有一个C++程序,它在进程启动后立即给出此错误-显然是在任何用户代码执行之前。它仅在启用内联时发生。即使内置了调试符号,我也无法进入代码。当我在VisualStudio中按下F10时,我收到了错误并且程序停止了。我在“调试/异常”中检查了所有异常/检查,但仍然没有休息。通常我会认为这样的事情是由于缺少运行时依赖项造成的,但我很肯定这不是这里的情况(已通过DependencyWalker验证)。编辑:我使用了SteveTownsend对CDB的推荐,现在我能够单步执行程序的预用户代码部分。最终的堆栈跟踪是:Child-SPRetAddrCallSite00000000`0008e308

c++ - 为什么没有调用 unexpected 函数?

我希望以下代码调用我的意外处理程序,但调用了我的终止处理程序:#include#includevoidmy_terminate(){std::cerrC++Builder6Developer'sGuide明确鼓励通过set_unexpected()安装自定义意外处理程序。我做错了什么,或者这只是C++-Builder6中的错误? 最佳答案 通过调用std::set_unexpected(对于std::unexpected)设置的处理程序将在抛出意外异常时调用;不是在未处理异常时。当违反动态异常规范时调用意外处理程序。举例说明;voi

c++ - 异常 - VC++2015 CTP Ultimate 中的不正确行为

我有一个程序:#includeusingnamespacestd;classTest{public:voidfunc(){cout我的预期是该程序将从main终止,但在VC++2015上maincout正在打印。这违反了我的理解,所以我用gcc编译了它在那里工作正常。这是VC++2015中的错误还是像这样的程序终止行为是未指定/UB行为?它是否应该执行cout?IDE:VS2015CTPUltimatePreview(30天)标志:/GS/analyze-/W3/Zc:wchar_t/ZI/Gm/Od/sdl/Fd"Debug\vc140.pdb"/fp:precise/D"_MBCS

c++ - 如何自定义未捕获的异常终止行为?

在g++和clang++中(至少在Linux中)在抛出异常但未捕获异常(未捕获的异常)后显示以下典型消息:terminatecalledafterthrowinganinstanceof'std::runtime_error'what():Bye例如:#includeintmain(){throwstd::runtime_error("Bye");}如何自定义错误消息,同时仍然可以完全访问抛出的异常?文档(http://www.cplusplus.com/reference/exception/set_unexpected/)提到了set_unexpected(和set_termina

c++ - abort() 和 terminate() "live"在哪里?

关于终止处理程序,据我了解,当代码中出现错误时,例如当我们没有捕获到异常时,terminate()被调用,后者又调用abort()set_terminate(my_function)允许我们获取terminate()以调用用户指定的函数my_terminate。我的问题是:这些函数“存在”在哪里,它们似乎不是语言的一部分,但就像它们存在于每个单独的cpp文件中一样工作,而无需包含任何头文件。 最佳答案 如果terminate和abort的默认处理函数不是您自己安装的,则它们必须位于编译器提供的运行时库中。通常,每个程序都链接到运行时