2017-11-30 4 views
0

私は既にこの問題を克服しているので、 (誰かが説明できるかもしれない黒い魔法があります)。コード(NDK)の無作為なポイントでSIGILLを受け取りました

Androidデバイス(Samsung Galaxy S7、他のデバイスで問題が発生する可能性は非常に高いですが)でネイティブコードをデバッグしています。コードはSIGILLでランダムな場所で停止します。問題は、関数がいくつかの値を返すと宣言されましたが、それは実際には例えば、その実施にはしていない場合に表示されます

答えて

0

int myfunc() { 
    someObject.performVeryImportantTask(); 
    // no return value! :(
} 

私は今-Werrorの価値を高く評価し始めています(I clangを非難するのが好きですが、私はそれよりもよく分かります)。何が私を困惑させるのかは、コード内の任意の点でSIGILLを投げる理由です。私の最高の推測では、ある時点での戻り値の欠如がコードと混乱し、無効なアドレスへのジャンプを生成しますが、誰かがさらに私を啓発することができれば私のゲストになります。

+1

私はあなたのcflagsに '-Werror -Wall'を追加することをお勧めします。 -Wreturn-typeはあなたのためにこれらの間違いをキャッチします。 –

関連する問題