>백엔드 개발 >C++ >중단점을 사용하여 GDB에서 변수 액세스 및 메모리 읽기/쓰기를 어떻게 모니터링할 수 있습니까?

중단점을 사용하여 GDB에서 변수 액세스 및 메모리 읽기/쓰기를 어떻게 모니터링할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 22:36:121033검색

How Can I Monitor Variable Access and Memory Reads/Writes in GDB Using Breakpoints?

GDB에서 변수 액세스 모니터링: '메모리 액세스'에 대한 중단점

GDB에서는 중단점을 설정하여 특정 변수를 모니터링하고 해당 변수가 액세스되거나 수정되는 시기를 식별할 수 있습니다. 다음은 이 목적을 위한 GDB 명령 및 기술에 대한 분석입니다:

Watchpoint 명령:

  • watch: 변수 쓰기 중단
  • rwatch: 변수 중단 읽기
  • awatch: 변수 읽기/쓰기 중단

메모리 위치에 감시점 설정:

할 수 있습니다. rwatch를 사용하여 메모리 위치에 감시점을 설정합니다. 명령:

gdb$ rwatch *0xfeedface

이것은 메모리 주소 0xfeedface를 읽을 때마다 중단점을 트리거합니다.

표현식에 대한 감시점 제한:

참고 다음을 포함하는 표현식에는 GDB 감시점을 설정할 수 없습니다. 변수:

gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.

이 문제를 해결하려면 표현식을 수동으로 확장하세요.

gdb$ print $ebx
 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f

하드웨어 및 소프트웨어 지원:

하드웨어 감시점 소프트웨어 감시점보다 빠른 성능을 제공합니다. OS가 하드웨어 감시점을 지원하는지 확인하려면 다음 명령을 실행하세요.

gdb$ show can-use-hw-watchpoints

출력이 1이면 하드웨어 감시점을 사용할 수 있습니다.

위 내용은 중단점을 사용하여 GDB에서 변수 액세스 및 메모리 읽기/쓰기를 어떻게 모니터링할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.