Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memantau Akses Pembolehubah dan Bacaan/Tulis Memori dalam GDB Menggunakan Titik Putus?

Bagaimanakah Saya Boleh Memantau Akses Pembolehubah dan Bacaan/Tulis Memori dalam GDB Menggunakan Titik Putus?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 22:36:121038semak imbas

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

Memantau Akses Pembolehubah dalam GDB: Titik Putus pada 'Akses Memori'

Dalam GDB, anda boleh menetapkan titik putus untuk memantau pembolehubah tertentu dan mengenal pasti apabila ia diakses atau diubah suai. Berikut ialah pecahan arahan dan teknik GDB untuk tujuan ini:

Arahan Titik Awas:

  • tonton: Pecah pada tulis pembolehubah
  • rwatch: Pecah pada pembolehubah membaca
  • menonton: Pecah pada bacaan/tulisan berubah

Menetapkan Titik Pantauan pada Lokasi Memori:

Anda boleh tetapkan titik pantau pada lokasi memori menggunakan arahan rwatch:

gdb$ rwatch *0xfeedface

Ini akan mencetuskan titik putus apabila alamat memori 0xfeedface dibaca.

Penghadan Titik Pantau pada Ungkapan:

Perhatikan bahawa titik pantau GDB tidak boleh ditetapkan pada ungkapan yang melibatkan pembolehubah:

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

Untuk mengatasi masalah ini, kembangkan secara manual ungkapan:

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

Sokongan Perkakasan lwn. Perisian:

Titik pantau perkakasan menawarkan prestasi yang lebih pantas daripada titik pantau perisian. Untuk menyemak sama ada OS anda menyokong titik pantau perkakasan, jalankan arahan berikut:

gdb$ show can-use-hw-watchpoints

Jika output ialah 1, titik pantau perkakasan tersedia.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memantau Akses Pembolehubah dan Bacaan/Tulis Memori dalam GDB Menggunakan Titik Putus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn