GDB, Break против Tbreak и Watchpoint - PullRequest
0 голосов
/ 06 июня 2011

Может кто-нибудь сказать мне, в чем разница между перерывом и разрывом относительно точек наблюдения?

A имеет простой тестовый код:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv) {
  int toto;
  toto = 1;
  toto = 2;
  toto = 3;
  return (EXIT_SUCCESS);
}

Когда я использую break на main (), затем наблюдаю, как будто переключается с 0 на 2:

(gdb) break main
Breakpoint 1 at 0x804839a: file pp.c, line 6.
(gdb) r
Starting program: /mnt/mega20/SRC/C/gdb/pp 

Breakpoint 1, main (argc=1, argv=0xbffff4f4) at pp.c:6
6         toto = 1;
(gdb) watch toto 
Hardware watchpoint 2: toto
(gdb) c
Continuing.
Hardware watchpoint 2: toto

Old value = 0
New value = 2
main (argc=1, argv=0xbffff4f4) at pp.c:8
8         toto = 3;
(gdb)

Но когда я использую tbreak, часы, кажется, работают:

(gdb) tbreak main 
Temporary breakpoint 1 at 0x804839a: file pp.c, line 6.
(gdb) r
Starting program: /mnt/mega20/SRC/C/gdb/pp 

Temporary breakpoint 1, main (argc=1, argv=0xbffff4f4) at pp.c:6
6         toto = 1;
(gdb) watch toto 
Hardware watchpoint 2: toto
(gdb) c
Continuing.
Hardware watchpoint 2: toto

Old value = 0
New value = 1
main (argc=1, argv=0xbffff4f4) at pp.c:7
7         toto = 2;
(gdb) c
Continuing.
Hardware watchpoint 2: toto

Old value = 1
New value = 2
main (argc=1, argv=0xbffff4f4) at pp.c:8
8         toto = 3;
(gdb)

Те же результаты, что и у команды start, все работает.

1 Ответ

1 голос
/ 23 апреля 2013

Предлагаю вам прочитать это:

Точки останова и наблюдения

...