gdb 설명서에 다음이 나와 있습니다.gdb로 멀티 스레드 응용 프로그램을위한 감시 점 설정
경고 : 다중 스레드 프로그램에서 소프트웨어 감시 점의 유용성은 제한적입니다. gdb가 소프트웨어 감시 점을 생성하면 단일 스레드에서 표현식의 값만 볼 수 있습니다. 표현식이 현재 스레드의 활동으로 인해 변경 될 수 있다고 확신하는 경우 (다른 스레드가 현재 상태가 될 수 없다는 확신이있는 경우) 평상시처럼 소프트웨어 감시 점을 사용할 수 있습니다. 그러나, 비 현재 스레드의 활동이 표현식을 변경하면 gdb는이를 알 수 없습니다. (하드웨어 워치 포인트는 모든 스레드에서 표현식을 보았습니다.)
그렇다면 어떻게 gdb를 사용하여 여러 스레드에서 watchpoint를 사용할 수 있습니까? gdb에서는 모든 스레드의 감시 변수에 대한 변경 사항을 볼 수 있습니까?
그렇다면 gdb가 소프트웨어 대신 watchpoint를 사용하도록 어떻게 말합니까? – MetallicPriest
watchpoint를 구현하는 방법을 선택하는 사람은 gdb입니다. 하드웨어 워치 포인트는 소수의 스칼라 (고정) 주소에서만 가능합니다. –
gdb가 실제로 hw 워치 포인트를 사용할 수 있는지 확인하십시오 :'(gdb) show can-use-hw-watchpoints'. –