Android StudioでGradleを使用して作成したネイティブコードがあります。デバッグの大部分はC++でうまく動作しているようですが、新しいクラスを追加したばかりですが、関数呼び出しに踏み込もうとすると、まったく無関係なコード領域で私は奇妙な場所に連れて行きます。ステップインでネイティブコードを使用すると、Androidスタジオでゴミが発生する
例えば、私はブレークポイントと次のコード行を有する:
SemVer ver_cl = PlatformHelper::getAppVersion();
を私が「ステップ」を実行し、私は一見、任意にhashtable.hのgnu-libstdc++
実装で終わりますコード行
私はシミュレータで動作しています。私は自分のプロジェクトをGradleファイルに同期させるようにしましたが、何がこの種の動作を引き起こしているのかは分かりません。
私はこれが起こっているとは思わない。関数本体には実際には何も含まれていません。 'int n = 0;'という行だけです。その内部に着地しているかどうか確認できます。つまり、私は今、実際にSemVer構造体を現時点で返さないことを認識しています。何らかの理由でコンパイラがそれについて不平を言っていませんか?変わったと思われる... – aardvarkk
コンパイラは実際に関数から値を返さないことについて不平を言うことはありません。そしてそのような場合には、関数から戻るときにスタックが壊れてしまい、事態が本当に変わってしまうかもしれません。 –
ああ、私は関数から有効な値を返さなかっただけです。私はそれがコンパイルエラーであることに慣れています - 私はそのようなランダムな動作を期待していませんでした。私は答えをアップアップします。 「実際の」ソリューションに関連するように回答を編集したい場合は、回答としてマークします。ご協力いただきありがとうございます! – aardvarkk