Windows Can';当Cygwin';s Perl使用backticks启动程序

Windows Can';当Cygwin';s Perl使用backticks启动程序,windows,perl,debugging,cygwin,windbg,Windows,Perl,Debugging,Cygwin,Windbg,我有使用反勾号启动任意进程的脚本。偶尔会发生崩溃(例如,零除法),发生崩溃时需要获取内核转储以进行分析 我已经在操作系统中注册了一个perl脚本作为崩溃处理程序(在Windows7中,我知道您想知道),该操作系统会被崩溃的PID调用;处理程序附加Microsoft的“cdb”调试器,该调试器创建所需的转储。我的测试“CRASHER”程序是一个C++执行文件,它执行一个除以零(CRASHER,exe)。 问题是:当我使用Cygwin的Perl实现时,程序崩溃不会触发崩溃处理程序。我的怀疑是Perl

我有使用反勾号启动任意进程的脚本。偶尔会发生崩溃(例如,零除法),发生崩溃时需要获取内核转储以进行分析

我已经在操作系统中注册了一个perl脚本作为崩溃处理程序(在Windows7中,我知道您想知道),该操作系统会被崩溃的PID调用;处理程序附加Microsoft的“cdb”调试器,该调试器创建所需的转储。我的测试“CRASHER”程序是一个C++执行文件,它执行一个除以零(CRASHER,exe)。 问题是:当我使用Cygwin的Perl实现时,程序崩溃不会触发崩溃处理程序。我的怀疑是Perl发现了这个问题,并悄悄地放弃了它。所有这些都可以通过ActiveState中的Perl正常工作

问题是:我怎样才能让Cygwin的Perl不碍事,让错误一路传播回系统

下面是一个使用ActiveState perl触发崩溃处理程序并生成核心转储的示例

  C:>     \tools\Perl\bin\perl.exe  -e "`Crasher.exe`;"
但使用Cygwin并不能解决这个问题

  C:>     \cygwin\bin\perl.exe  -e "`Crasher.exe`;"
另外,如果我直接在Cygwin的shell中启动Crasher.exe,则不会调用崩溃处理程序;如果在Cygwin或ActiveState Perl中通过backticks启动,也不会调用它。

让我举个例子:

基本问题是SAP调用SetUnhandledExceptionFilter()。所有的大型程序都是这样做的。操作系统中没有内置boss超越开关来阻止它这样做

所以不,你也不能为Cygwin这么做。您可以在调试器下运行它并捕获第一次出现的异常。根据抛出的异常数量,您可能会找到有趣的异常