gdb의 watch 명령에서 주소를 감시하게 할수 있나요?

ulra의 이미지

안녕하세요.

어떤 주소의 값이 NULL 이 될때를 알고 싶어서 방법을
찾는 가운데 watch라는 명령을 찾았습니다.

이 명령으로 특정 주소의 값이 NULL 되도록 설정하고
싶은데, 잘 안됩니다.

주소를 감시하는 방법을 아시는 분 좀 알려주세요.
아니면 어떤 꽁수로 알아볼 수 있다면 그것도 알려주세요.

부탁드립니다.

nomoreid의 이미지

간단히 iCount라는 변수가 1000이되는것을 주소값을 찾아내 watch 해보겠습니다.

(gdb) p &iCount
$7 = (int *) 0x804c3a4
(gdb) watch *0x804c3a4 == 1000
Hardware watchpoint 15: *134529956 == 1000
(gdb) c

..................

Hardware watchpoint 14: *134529956 == 1000

Old value = false
New value = true
main (argc=1, argv=0xbfb654b4) at Test.cpp:185
185                                             printf("test %d\n",iCount);
(gdb) p iCount
$6 = 1000

아시겠죠? C와 마찬가지로 &변수명 을하면 주소가 나오고 *주소값 하면 해당 주소의 값을 의미합니다.

Never Ending 삽질.

ulra의 이미지

이렇게도 쓸수 있네요. ^^;;
감사드리고요. 좋은 하루 되시길 바랍니다.

OTL 즐!!!! (좌절 금지!!!)