Bagaimana cara mengubah isi memori menggunakan GDB?


Jawaban:


124

Yang paling mudah adalah menyetel variabel program (lihat GDB: penugasan ):

Atau Anda bisa memperbarui lokasi sewenang-wenang (dapat ditulis) berdasarkan alamat:

Masih ada lagi. Baca manualnya .


4
Saya perlu menetapkan variabel program SEBELUM mengakses lokasi memori sewenang-wenang? Tidak bisakah saya langsung menjalankan perintah set kedua?
Spidey

juga, set (str[6]) = 'c'berfungsi, jika Anda memiliki array, sepertichar str[]
xealits

30

Seperti yang dikatakan Nikolai, Anda dapat menggunakan perintah gdb 'set' untuk mengubah nilai variabel.

Anda juga dapat menggunakan perintah 'set' untuk mengubah lokasi memori. misalnya. Memperluas contoh Nikolai:

Ini harus bekerja untuk semua penunjuk yang valid, dan dapat ditransmisikan ke tipe data yang sesuai.


set {char[100]}(0x00) = ""Menghapus 100 byte memori di alamat 0x00
davenpcj

16

Memperluas jawaban yang diberikan di sini.

Anda bisa saja melakukan set idx = 1untuk mengatur variabel, tetapi sintaks itu tidak disarankan karena nama variabel mungkin bentrok dengan sub-perintah yang ditetapkan. Sebagai contoh set w=1tidak akan valid.

Ini berarti Anda harus memilih sintaks: set variable idx = 1atau set var idx = 1.

Last but not least, Anda bisa menggunakan perintah print lama terpercaya Anda, karena ini mengevaluasi ekspresi. Satu-satunya perbedaan adalah dia juga mencetak hasil ekspresi.

Anda dapat membaca lebih lanjut tentang gdb di sini .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.