0

Rhel5で、サードパーティのC++実行可能ファイルを呼び出すときにセグメンテーション違反が発生します。

残念ながら、DEBUGフラグを有効にしてこのサードパーティの実行可能ファイルを再コンパイルすることはできません。そのため、セグメンテーションフォールトからのコアダンプは、残念ながら、gdbとvalgrindの両方で多くの情報を提供しません。

たとえば、valgrindは次のとおりです。

==4074== Process terminating with default action of signal 11 (SIGSEGV)                                                                                                              
==4074==  Access not within mapped region at address 0x7158E7F7                                                                                                                      
==4074==    at 0x7158E7F7: ???                                                                                                    
==4074==    by 0x6322203A22656D6E: ???                                                                                                                                               
==4074==    by 0x306C675F6E557267: ???                                                                                                                                               
==4074==    by 0x202C22373232302F: ???                                                                                                                                               
==4074==    by 0x6D616E656C696621: ???                                                                                                                                               
==4074==    by 0x72686322203A2264: ???                                                                                                                                               
==4074==    by 0x3030306C675F6E54: ???                                                                                                                                               
==4074==    by 0x346469702E373231: ???                                                                                                                                               
==4074==    by 0x646469662E34372F: ???                                                                                                                                               
==4074==    by 0x722E64616568656B: ???                                                                                                                                               
==4074==    by 0x63656D6F6C756764: ??? 

おそらくlsofなどを介して、問題の原因に関する情報をサードパーティのベンダーに提供する方法はありますか?

4

1 に答える 1

1

strace を使用して答えを見つけました

特に

strace -f -o strace.txt $myPath/bin/XMLForm $* ${MISSING_LOCALE} ORBtraceLevel 40 -ORBtraceThreadId 1

これにより、すべての低レベル C-API 呼び出しを含む strace.txt ファイルが生成されました。

そして、セグメンテーション違反の直前に、あなたはそれを知りませんでした.... プログラムは、存在しないログ ファイルを探していました。そのログを追加しました。これ以上のセグメント障害はありません。

于 2013-03-04T19:14:02.153 に答える