Android(Java / C / C ++)で混合コードをデバッグしようとしています。私のターゲットデバイスはVizio1008です。コードはエミュレーターで実行され、GDBを使用してEclipseからデバッグできます。ただし、実際のデバイスではこれを行うことはできません。
これに何日も苦労した後、私は問題を特定しました:
GDBSERVERがデバイスで(正常に)起動すると、「不明なレジスタd0が要求されました」というメッセージが表示されてすぐに終了します。したがって、デバッグセッションはできません。ARMのDS-5デバッガも試してみました。GDBSERVERは接続されたままですが、リモートデバッガーからの接続試行で終了します。GDBSERVERデバッグ出力を試しましたが、有用な情報が提供されません。
さらに奇妙なことに、入手できるGDBSERVERのバージョンを試してみたところ、すべてがこのように動作しました。ただし、古いバージョンのGoogle NDK(3または4バージョン前)の1つからGDBSERVERを見つけました。そして、このバージョンは機能します!!! しかし、プログラムがOKであることを私が知っていても、(ホスト上の)デバッガーはすぐに停止します(セグメンテーション違反)。
GDBSERVERのソースコードを調べたところ、このエラーは、GDBSERVERがハードウェアを検査するときの起動シーケンスに関連しているように見えます。おそらく、浮動小数点コプロセッサに関連していますが、このエラーメッセージはかなり一般的であるため、わかりません。
重要な場合は、GoogleNDKを使用してWindowsで開発しています。コードは99%C / C ++で、Javaシェルといくつかの関数がJavaで実装されています(スレッド化されたHTTP呼び出し)。この場合も、アプリケーションはデバイス上で動作し、エミュレーター上でデバッグできます(JavaとC / C ++の両方)。デバイスでJava部分をデバッグすることもできます。
誰かがそれが何であるかを知っていますか?そしてそれを修正する方法は?ビジオですか?
前もって感謝します。