私は20のコンストラクタを持つC++オブジェクトを持っており、どのコンストラクタが呼び出されているのか知りたい。C++オブジェクトのgdbのすべてのコンストラクタでブレークポイントを同時に設定する方法は?
答えて
。 documentationを参照してください:
rbreak regex
Set breakpoints on all functions matching the regular expression regex. This command sets an unconditional breakpoint on all matches, printing a list of all breakpoints it set. Once these breakpoints are set, they are treated just like the breakpoints set with the break command. You can delete them, disable them, or make them conditional the same way as any other breakpoint.
例:
class Foo {
public:
Foo() {}
Foo(int) {}
};
int main() {
Foo f1;
Foo f2(1);
return 0;
}
GDBセッション:あなたは多くのコンストラクタは、私はあなたのデザインが欠陥があると言うだろうとしている場合
[ ~]$ gdb -q a.out
Reading symbols from a.out...done.
(gdb) rbreak Foo::Foo
Breakpoint 1 at 0x4004dc: file so-rbr.cpp, line 3.
void Foo::Foo();
Breakpoint 2 at 0x4004eb: file so-rbr.cpp, line 4.
void Foo::Foo(int);
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000004004dc in Foo::Foo() at so-rbr.cpp:3
2 breakpoint keep y 0x00000000004004eb in Foo::Foo(int) at so-rbr.cpp:4
(gdb)
break myNamespace::myClass::myClass
を実行すると、すべてのコンストラクタでgdbが破損します。
たとえば、少なくとも2つのコンストラクタを持つruntime_errorの作成を中断する場合は、break std::runtime_error::runtime_error
を実行します。
Breakpoint 4 at 0xaf20 (4 locations)
このブレークポイントは複数のコンストラクタに設定されていることを、示している:gdbの出力は次のようなものになります。このような出力を提供しますinfo breakpoints
を実行しているブレークポイントの位置を確認するには:あなたはrbreak
を使用することができます
Num Type Disp Enb Address What
1 breakpoint keep y <MULTIPLE>
1.1 y 0x000000000000af20 <std::runtime_error::runtime_error(char const*)@plt>
1.2 y 0x000000000000b300 <std::runtime_error::runtime_error(std::runtime_error const&)@plt>
1.3 y 0x000000000000b460 <std::runtime_error::runtime_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@plt>
1.4 y 0x000000000000b5e0 <std::runtime_error::runtime_error(char const*)@plt>
何らかの理由で、break_stop :: runtime_error :: runtime_errorのためにただ1つのコンストラクタでブレークポイントを取得しています – avimonk
'break std :: runtime_error :: runtime_error'または' break std :: runtime_error :: runtime_error() 'を実行しましたか? – OutOfBound
b std :: runtime_error :: runtime_error。あなただけを貼り付けてコピーしてください。たぶん古いGDBのバージョンやコードがデバッグでコンパイルされていないのでしょうか? – avimonk
- 1. GDB内のすべての行にブレークポイントを設定
- 2. Linux上のgdbのCまたはC++コードでブレークポイントをプログラムで設定する
- 3. GDBでブレークポイントを設定する
- 4. gdb、ファイル内のすべての関数にブレークポイントを設定する
- 5. gdb:空白を含むファイルにブレークポイントを設定する方法
- 6. gdbをいくつかの条件でブレークポイントを設定する方法は?
- 7. コード内のすべてのクラスのコンストラクタにブレークポイントを設定できますか?
- 8. gdbのpython関数にブレークポイントを設定するには
- 9. gdb:内部エラー設定ブレークポイント
- 10. VS2010のすべてのメソッドにブレークポイントを設定するには
- 11. イテレータのコンストラクタでデフォルト値を設定する方法は? C++
- 12. GDB:特定のオブジェクトのデストラクタを呼び出すときのブレークポイント
- 13. gdbデバッガが2つのブレークポイントを設定するのはなぜですか?
- 14. lldb - cppファイル内のすべての関数のブレークポイントを設定する方法
- 15. C++コードですべてのコンストラクタを検索する方法は?
- 16. gdbマルチスレッドのCプログラムでアサートオンのブレークポイント
- 17. gdbのブレークポイントの行を変更する方法は?
- 18. GoogleTest:ブレークポイントの設定方法
- 19. バックグラウンドモードでのGdbブレークポイント
- 20. TypeScript:コンストラクタのオブジェクトプロパティを設定する方法(オブジェクトのプロパティに応じて)
- 21. すべてのC#プロジェクトをソリューションに設定する方法
- 22. Visual Studio(C++)でブレークポイントを設定する
- 23. VS 2015のブレークポイント条件をバッチで設定する方法は?
- 24. このようにブレークポイントを設定する方法は?
- 25. コードの各行にブレークポイントを設定する方法は?
- 26. intellij IDEAのwebpackにブレークポイントを設定する方法は?
- 27. gdb特定のスレッドでブレークポイントを無効にする
- 28. Qt Creatorで「malloc_error_breakにブレークポイントを設定してデバッグする」方法
- 29. GDB:特定のブレークポイントまで実行
- 30. GDBが共有ライブラリにブレークポイントを設定できない
。または、デザインの実装は次のとおりです。 –
なぜ 's'コマンドを使ってctorに入ることができないのですか? – dlmeetei
呼び出し元のコードからどのコンストラクターが呼び出されているかを把握できるはずです。それでもブレークポイントを設定したい場合は、20個のコンストラクタすべてからダミーメソッドを呼び出してブレークポイントを設定することができます。 – VTT