ソースコードがないプログラムをデバッグしようとしていますが、std :: stringに格納されているものを調べる必要があります。私はここでグーグルして見てきましたが、STLコンテナの出力に関するいくつかの情報を見つけましたが、そのすべては変数を参照しています。ソースデータやデバッグ情報はクラスデータのメモリオフセットです。これを行う方法はありますか?ソースコードなしでGDBのstd :: stringを調べるには?
12
A
答えて
22
すべてstd::string
の実装には、どこかの生の文字へのポインタがあります。 g++ 4.x
の場合、そのポインタは文字列のオフセット0
にあります。
文字列が、 0x7fffffffda88
、次に
print *(char**)0x7fffffffda88
が必要です。
5
おそらく最も簡単なオプションは、のように、c_str
方法を使用することです:
print myStr.c_str()
関連する問題
- 1. gdbでboost :: ptr_deque <std::string>を調べる方法は?
- 2. gdbでコアファイルのpthread_raise(sig = 6)の理由を調べるには
- 3. なぜstd :: string :: max_size()== std :: string :: allocator :: max_size()
- 4. GDBのFortran配列構造コンポーネントを調べるには?
- 5. 呼び出しのstd ::〜GDBでのbasic_string()
- 6. "std :: string + char"式は別のstd :: stringを作成しますか?
- 7. クロスgdbを使用してクロスターゲットマシンのコアファイルを調べる方法
- 8. グローバル変数のときはstd :: stringをgdbに出力できません。なぜですか?
- 9. GDB:オペコードで命令として調べる
- 10. タブ文字を展開したstd :: stringの(印刷された)長さを調べる方法は?
- 11. gdbのスタックを調べる正しい方法は何ですか?
- 12. std :: string :: c_strとstd :: string :: dataの違いは何ですか?
- 13. :: std :: stringとstd :: stringの違いは何ですか?
- 14. gdbのソースコードbreakpoint.c - 0x4e 0x4f
- 15. gdbはstd :: out_of_rangeをベクトルでスローしない
- 16. のstd ::リスト<std::string> ::イテレータはstd ::文字列にする
- 17. Ubuntu:ユーティリティのソースコードを調べる方法は?
- 18. std :: __ cxx11 :: stringをstd :: stringに変換する
- 19. ソースコードの表示にgdbのバグ
- 20. Chromeプラグインのソースコードを調べるにはどうすればよいですか?
- 21. std :: string s =(std :: string) "a" + "b" + "c"; OK?
- 22. 簡単な質問:なぜ文字列ライブラリ関数std :: string :: findは常にstd :: string :: nposを返しますか?
- 23. std :: map <std :: string、std :: string> JavaCPPの変換
- 24. natvisで簡単なstd :: stringを視覚化するには?
- 25. #includeなしでstd :: stringを使用できる<string>?ここで
- 26. std :: stringのセグメンテーションフォルト
- 27. std :: stringからjchar *を得るには?
- 28. GDB(x86)を使ってスタックを調べる
- 29. コンパイル時にstd :: bitsetのサイズを調べる方法
- 30. std :: string :: findは常にstring :: nposを返します。
働いていたこと、ありがとうございます。私が知りたいことの一つは、自分のようなものをどうやって見つけ出すかということです。クラス 'X'のソースコードが与えられていると、そのクラス内のフィールドの位置をどのように把握できますか?私が現時点で考えることができる唯一の方法は、自分のテストアプリケーションをコンパイルし、私が与えたポインタ(offsetofなど)を調べることです。 – PeterBelm
オフセットを調べる最も速い方法は、実際にはデバッグモードで与えられたクラスを使って簡単なテストプログラムをコンパイルし、GDBのオフセットとクラスレイアウトを調べることです。これはまさにあなたの質問に答えるために私が行ったことです;-) –
SSOがclangのlibC++のように使われている場合、小さな文字列のポインタはありません。 ;-) – Deduplicator