Raspbianでgdbを使用してプログラムをデバッグしようとしましたが、取得できるのは次のとおりです。
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
SIGILLハンドルをnostop(handle SIGILL nostop)に設定しても役に立ちません:
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
私が得るすべてのバックトレースは:
#0  0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1  0x00000000 in ?? ()
gdbの外部でプログラムを起動すると、通常のC ++例外(デバッグしたい)が発生します。
すべてのソフトウェアは、raspbianリポジトリから最新バージョンに更新されました。さらに、ラズベリーpiファウンデーションカーネル「3.18.9+」とラズベインカーネル「3.18.0-trunk-rpi」も試してみました(カスタムカーネルモジュールが必要です)。メインマシンで同じプログラムを問題なくデバッグできます。
更新:デバッグはカーネル「3.12-1-rpi」で期待どおりに機能します。
このエラーの原因は何ですか?
                  @mpromonet 
                
                  
                    —
                    someonr 2015年
                    
                  
                
              passはデフォルトで設定されているため、違いはありません。違いはありません。と同じ結果handle SIGILL nostop
                
                  そして、意味のあるバックトレース(
                
                  
                    —
                    ゴルディロックス
                    
                  
                
              bt)はありませんか?「このエラーの原因は何ですか?」リンカー/ローダー(ld-linux-armhf)の不正な命令のみに基づいています。
                
                  意味のあるバックトレースを取得できませんでした(編集された質問を参照)。小さな例を作ってみます。また、gdbがないと不正なオペコードを取得できないので混乱しています。
                
                
                  
                    —
                    someonr 2015年
                    
                  
                
              
                  スタックが破壊されたようです、valgrindが役立ちますか?
                
                
                  
                    —
                    mpromonet 2015年
                    
                  
                
              
handle SIGILL pass nostopか?