当Cygwin的Perl用反引号启动程序时,不能触发系统debugging器转储核心

我有使用反引号启动任意进程的脚本。 有时会发生崩溃(例如零分),并且在发生这种情况时需要获得核心转储以进行分析。

我已经注册了一个perl脚本作为与操作系统的崩溃处理程序(这在Windows 7中 – 我知道你想知道),它与崩溃的PID调用; 处理程序附加微软的'cdb'debugging器,它创build所需的转储。 我的testing“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中的反引号启动,它也不会被调用。

让我举出汉斯·帕斯坦 :

基本的问题是SAP调用SetUnhandledExceptionFilter()。 做自己的事情,所有的大型项目都这样做。 在操作系统中没有内置的老板倍率开关来阻止它这样做。

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