-1

設定したいコードの部分は次のとおりです。

void *sync(void *ptr) {
  vector<short> gen = generate_sygnal();

デバッグ フラグを使用してプログラムをビルドします。gdb で行うことは次のとおりです。

(gdb) break daemon.cxx:sync
break daemon.cxx:sync
Breakpoint 1 at 0x804d080: file /home/username/projects/armd/complex/daemon/daemon.cxx, line 160.
(gdb) watch gen
watch gen
No symbol "gen" in current context.
(gdb) run
run
Starting program: /home/username/projects/armd/complex/build/daemon/daemon 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
2012/05/02 11:00:32 error: Cannot open configuration file /home/username/projects/armd/complex/build/daemon/armd.conf
[New Thread 0xb7fe7b40 (LWP 4329)]
2012/05/02 11:00:32 info: Listening on port 2000
/dev/ttyS0 port opened!
[New Thread 0xb77e6b40 (LWP 4330)]
[Switching to Thread 0xb77e6b40 (LWP 4330)]
Breakpoint 1, sync (ptr=0x8055108)
    at /home/username/projects/armd/complex/daemon/daemon.cxx:160
160 void *sync(void *ptr) {
(gdb) watch gen
watch gen
No symbol "gen" in current context.
(gdb) 

では、gdb で gen の値を確認するにはどうすればよいでしょうか? ベクトル値の完全なスタックが必要です。

4

1 に答える 1

1

sync()変数が実際にスコープ内になるように、もう 1 行追加します (GDB のnextコマンドを使用します)。

于 2012-05-02T07:27:23.673 に答える