x86 GDB는 특별한 하드웨어 자원 (디버그 레지스터?)을 사용하여 감시 점을 설정합니다. 어떤 상황에서는 리소스가 충분하지 않을 때 GDB가 watchpoint를 설정하지만 작동하지 않습니다. Linux에서이 리소스의 가용성을 프로그래밍 방식으로 모니터링하는 방법이 있습니까? 어쩌면 procfs에있는 정보 일 수도 있습니다. 디버깅을 위해 풀에서 기계를 선택하려면이 정보가 필요합니다. GDB 내부 구조에서gdb에서 감시 점을 설정하는 데 필요한 자원을 모니터하는 방법은 무엇입니까?
: 그들은 하드웨어 자원에 의존하기 때문에 은 "하드웨어 브레이크 포인트는 수에 제한 될 수 있으며 사용자가 더 요구할 때, GDB는 소프트웨어 브레이크 포인트를 설정하려고 시작합니다 (일부 아키텍처에서, 특히있다. 32 비트 x86 플랫폼에서 gdb는 모든 하드웨어 중단 점과 감시 점을 삽입 할 수있는 충분한 하드웨어 자원이 있는지 여부를 항상 알 수 없습니다. 이러한 플랫폼에서 디버깅중인 프로그램이 계속 실행될 때만 gdb가 오류 메시지를 인쇄합니다. "
"너무 많은 다른 watchpoint가 요청됩니다 (일부 아키텍처에서는 디버그 된 프로그램이 다시 시작될 때까지는 이러한 상황을 감지 할 수 없습니다). x86 디버그 레지스터는 h ardware 중단 점 및 watchpoint에 대해 너무 많은 하드웨어 중단 점을 설정하면 watchpoint 삽입이 실패 할 수 있습니다. "
"32 비트 Intel x86 프로세서에는 디버깅을 용이하게하기 위해 설계된 특수 디버그 레지스터가 있습니다 .gdb는 x86 기반 포트가 watchpoint 및 하드웨어 지원 중단 점에 대한 지원을 구현하는 데 사용할 수있는 함수의 일반적인 라이브러리를 제공합니다.