2012-05-06 2 views
0

GDB에서 첫 번째 (그리고 가능한 유일한) 하드웨어 감시 점을 watch varname을 통해 설정 한 후에는 삭제를 통해 제거 할 수 없습니다.리눅스 커널 3.0.0의 모든 하드웨어 감시 점 제거

GDB를 종료하더라도 다음 재부팅 때까지이 감시 점이 활성화 된 것처럼 보입니다. GDB를 다시 시작한 후에 또 다른 하드웨어 감시 점을 설정하려고하면, 모든 하드웨어 감시 점을 이미 가지고 있다는 커널 메시지가 로그에 나타납니다. Setting GDB hardware watchpoint/how to set software watchpoint과 같은 문제 인 것 같지만 하드웨어 감시 점이 필요하기 때문에 해결책이 적용되지 않습니다.

이 (또는 전체) 하드웨어 감시 점을 제거 할 수있는 도구 또는 시스템 호출이 있습니까? CPU는 Core i5이고 Linux 커널은 Ubuntu 11.10 (Oneiric Ocelot)의 3.0.0-17- 일반입니다.

+1

이것은 버그와 같습니다. gdb는 ptrace를 사용하여 하드웨어 중단 점을 추가/제거합니다. 그래서 strace에서 gdb를 실행 해보고 하드웨어 중단 점과 관련된 ptrace 호출을 찾아서 잘하면, 어떤 일이 일어나고 있는지에 대한 단서를 얻을 수 있습니다. 또한 최신 커널과 gdb를 실행하고 있는지 확인하십시오. 업스트림 커널을 사용하는 것도 또 다른 옵션입니다. – Naveen

+0

어떻게 제거하려고합니까? 어떻게됩니까? 최신 gdb (7.4)를 사용해 보셨습니까? – dbrank0

+0

도움을 주셔서 감사합니다 - 오늘 커널을 3.0.0-19로 업그레이드했습니다. 이제 하나 이상의 하드웨어 감시 점을 만들 수 있으며 gdb가 닫히면 자동으로 제거됩니다. – Sven

답변

2

gdb의 watch varname을 통해 첫 번째 (그리고 유일하게 가능한) 하드웨어 watchpoint를 설정 한 후에는 delete를 통해 제거 할 수 없습니다.

위의 설명은 거짓입니다. 무엇이 당신에게 결론을 이끌어 냈습니까?

이 (또는 전체) 하드웨어 감시 점을 제거 할 수있는 도구 또는 시스템 호출이 있습니까?

이러한 도구는 필요하지 않습니다. 단순히 GDB를 종료하면 모든 중단 점과 watchpoint가 사라집니다. 또는 (gdb) delete (중단 점을 지정하지 않고)을 수행하고 모두 삭제할 것인지 확인하십시오.

+0

죄송합니다. 동작을 재현 할 수 없습니다. 오늘 3.0.0-19로 업데이트하면 모든 것이 정상적으로 보입니다. – Sven

1

(데이터 중단 점이라고도 함) watchpoint를 사용하십시오. 그것은 다음과 같은 일반 브레이크 포인트로 처리 할 수 ​​

(gdb) info watchpoints 
Num  Type   Disp Enb Address   What 
2  acc watchpoint keep y      x 

(gdb) delete 2 

(gdb) info watchpoints 
No watchpoints. 
(gdb) 

좋은 참조가 Setting Watchpoints입니다.