
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
漢字のコメントをはずすとコン...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
ビルドとリビルドの違いを教え...
-
Makefile作成時の拡張子.oとは?
-
VS2010でLibHaruをビルドした...
-
外部シンボル "_main"は未解決です
-
visual fortranのコンパイル時...
-
CImageクラスの使用について
-
エクセルVBAではRound...
-
マクロ コンパイルがグレーバック
-
OpenCVを Borland C++ Builder...
-
GCC Developer Liteでヘッダフ...
-
ビルドから除外されたソースの...
-
1 つ以上の複数回定義されてい...
-
ヘッダファイルに関数本体を書...
-
2G以上のファイル操作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
C言語でヘッダファイルにグロー...
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
ILSpyで、デコンパイルできない。
-
<math.h>があるのにsqrtが・...
-
コンパイルエラー:ユーザ定義...
-
C++コンパイル時に『 C1083: in...
-
C言語のコンパイルができません
-
マクロ コンパイルがグレーバック
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
【VC++6.0(MFC)】警告「LINK : ...
-
ビルドとリビルドの違いを教え...
-
漢字のコメントをはずすとコン...
-
MO, PO, POT, ファイルの開き方...
-
[c++] <pthread.h>がinclude で...
おすすめ情報