Windows+cygwin+emacsでc++のプログラムを勉強しています。デバッガとしてemacs上でgdbを使っているのですが、無名の名前空間にある関数にブレイクポイントを設定する方法がわかりません。例えば、
namespace {
void foo() {
...
}
}
int main(void) {
foo();
}
のようなfoo.cppファイルをコンパイルしてfoo.exeファイルを作り、それをgdbによりデバッグするとします。そこで、gdb上で
b main
とすると、mainに入ったところにブレイクポイントが設定されますが、
b foo
としても、Function "foo" not defined.と表示されてブレイクポイントが設定されません。無名の名前空間にある関数にはどのように入力してブレイクポイントを設定するのでしょうか。とりあえず、今は行番号によりブレイクポイントを設定しています。ご存じの方がいらっしゃいましたら、ご教授ください。お願いします。
No.1ベストアンサー
- 回答日時:
一番良い方法かどうかはわかりませんが、
b foo.cpp:foo
でブレークポイントを設定することが出来ました。
ちなみに、各バージョンは
cpp (GCC) 3.4.4 (cygming special)
gdb 6.5.50.20060706-cvs (cygwin-special)
です。
ご回答ありがとうございます。試してみましたが、こちらではブレイクポイントを設定することはできませんでした。gdbのバージョンが
GNU gdb 2003-03-03-csv (cygwin special)
だからでしょうか...。
No.2
- 回答日時:
cygwinはあまり分からないのですが、多分これでいいのかと思います。
% g++ -g foo.cpp
% nm a.exe # シンボル一覧を見てみる。
08049530 d _DYNAMIC
08049614 d _GLOBAL_OFFSET_TABLE_
08048514 R _IO_stdin_used
w _Jv_RegisterClasses
080483c4 T _ZN36_GLOBAL__N_foo.cpp_00000000_DF1B9ED13fooEv
08049520 d __CTOR_END__
0804951c d __CTOR_LIST__
08049528 d __DTOR_END__
08049524 d __DTOR_LIST__
08048518 r __FRAME_END__
0804952c d __JCR_END__
0804952c d __JCR_LIST__
08049634 A __bss_start
08049628 D __data_start
080484c0 t __do_global_ctors_aux
08048370 t __do_global_dtors_aux
0804962c D __dso_handle
0804951c a __fini_array_end
0804951c a __fini_array_start
w __gmon_start__
U __gxx_personality_v0@@CXXABI_1.3
0804951c a __init_array_end
0804951c a __init_array_start
08048460 T __libc_csu_fini
080483f0 T __libc_csu_init
U __libc_start_main@@GLIBC_2.0
08049634 A _edata
08049638 A _end
080484f4 T _fini
08048510 R _fp_hw
080482d8 T _init
08048320 T _start
08048344 t call_gmon_start
08049634 b completed.5513
08049628 W data_start
080483a0 t frame_dummy
080483ca T main
08049630 d p.5511
% nm a.out | grep foo # ちょっと多いので、怪しそうなのを探してみる
080483c4 T _ZN36_GLOBAL__N_foo.cpp_00000000_DF1B9ED13fooEv
ということで。
(gdb) b _ZN36_GLOBAL__N_foo.cpp_00000000_DF1B9ED13fooEv
でどうでしょうか?
それと、DF1B9ED13の部分はコンパイルする毎に変る様子だったので御自身の環境でやらないとダメかと思います。
もしくは、
% nm a.exe | c++filt | grep foo
080483c4 T (anonymous namespace)::foo()
ということなので
(gdb) b (anonymous namespace)::foo()
でもいいかと思います。
ちなみに私は、
g++ (GCC) 4.1.1
GNU gdb 6.4
と、割と新し目なので違う可能性もあります。
あと、linuxなので nm で出てるアドレスは大分違うと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windowsの回復ドライブや復元ポイントを使用した場合の戻る位置を教えてください。 5 2023/08/19 14:52
- C言語・C++・C# Makefileのechoの展開について 2 2022/07/26 07:35
- その他(プログラミング・Web制作) zshの例外処理 1 2022/06/02 16:36
- gooポイント gooポイントをdポイントに交換できない。 3 2022/04/22 20:39
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- gooポイント dポイントと gooポイント 3 2022/10/02 19:53
- C言語・C++・C# condaコマンドに対応したプロキシ設定が思うようにならないようです。 2 2022/04/11 17:15
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
エクセルVBAではRound...
-
セミコロンについて
-
クリティカルエラー Expressio...
-
C言語でヘッダファイルにグロー...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
PRO*C コンパイルエラー
-
定数式とはどういう意味でしょ...
-
C言語のコンパイルができません
-
[c++] <pthread.h>がinclude で...
-
VMwareのLinuxでコンパイルでき...
-
includeと#include
-
ILSpyで、デコンパイルできない。
-
Microsoft の Visual C++ サン...
-
C++/CLIで、アンマネージC++のD...
-
コンパイルエラー:ユーザ定義...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
エクセルVBAではRound...
-
<math.h>があるのにsqrtが・...
-
ILSpyで、デコンパイルできない。
-
セミコロンについて
-
外部シンボル "_main"は未解決です
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
【VC++6.0(MFC)】警告「LINK : ...
-
定数式とはどういう意味でしょ...
-
ビルドとリビルドの違いを教え...
-
C++コンパイル時に『 C1083: in...
-
戻り値について
おすすめ情報