當運行在不潔模式一個Perl CGI腳本,我得到以下形式的錯誤源...找到一個Perl的污點模式錯誤
Insecure dependency in some_function while running with -T switch at (eval some_line) line some_other_line.
Compilation failed in require at my-script.cgi line 39.
BEGIN failed--compilation aborted at my-script.cgi line 39.
我-script.cgi線39是使用聲明對於本身不使用eval或some_function的perl模塊,可能會使用另一個庫。 some_line和some_other_line行號在my-script.cgi或my-script.cgi的第39行中使用的庫中似乎沒有意義。
鑑於此錯誤,我如何追蹤發生污點錯誤的位置?
我已經嘗試設置一個新的芯片信號處理程序應打印堆棧跟蹤,即
$SIG{ __DIE__ } = sub { require Carp; Carp::confess(@_); };
但這似乎對錯誤沒有影響。也許這是一個錯誤的信號,陷入困境,不及早發生,或者需要更復雜的東西。
通過圍繞我設法縮小問題,足以發現,在CGI.pm中的錯誤是我運行到特定問題的根本原因緩慢移動的模具聲明 - HTTP:// www.nntp.perl.org/group/perl.perl5.porters/2008/01/msg133691.html儘管如此,我仍然對追蹤這類問題的一般方法非常感興趣。 – 2011-06-15 05:28:43
這就是爲什麼人們應該爲CGI使用CGI.pm(而不是「自己動手」)。通過對成千上萬的用戶(如你)進行壓力測試發現錯誤,並報告並修復錯誤。也很好地找到問題。 – DavidO 2011-06-15 05:39:22