J'utilise LLDB, je me demande comment imprimer la valeur dans la mémoire 0xb0987654?
Xcode a une très belle fenêtre Navigateur de mémoire , qui affichera très bien le contenu des adresses mémoire. Il vous permet également de contrôler le regroupement d'octets et le nombre d'octets affichés, et de faire reculer ou avancer une page mémoire:
Vous pouvez y accéder en appuyant sur ⌘ ^ ⌥⇧M (⌘⇧M dans Xcode 9 et versions antérieures)
ou
Débogage -> Workflow de débogage -> Afficher la mémoire
Remarquez le champ dans son coin inférieur gauche où vous pouvez coller l'adresse mémoire que vous souhaitez inspecter!
Documentation ici: https://developer.Apple.com/library/ios/recipes/xcode_help-debugger/articles/viewing_memory.html
Réponse connexe ici: Comment puis-je ouvrir le navigateur de mémoire dans Xcode 4?
Pour compléter la réponse de Michael.
J'ai tendance à utiliser:
memory read -s1 -fu -c10000 0xb0987654 --force
Cela s'imprimera dans le débogueur.
J'espère que cela t'aides.
"me
" est la commande que vous recherchez.
Par exemple, cette commande lldb:
me -r -o /tmp/mem.txt -c512 0xb0987654
copiera 512 octets de votre adresse mémoire dans un fichier à /tmp/mem.txt.
Voici une astuce simple pour afficher des tableaux typés de longueur fixe dans lldb. Si votre programme contient une variable longue * qui pointe vers 9 éléments, vous pouvez déclarer un type struct qui contient un tableau fixe de 9 valeurs longues et convertir le pointeur sur ce type:
long *values = new long[9]{...};
(lldb) expr typedef struct { long values[9]; } l9; *(l9 *)values
(l9) $1 = {
values = {
[0] = 0
[1] = 1
[2] = 4
[3] = 9
[4] = 16
[5] = 25
[6] = 36
[7] = 49
[8] = 64
}
}
J'utilise le typedef lorsque je code en C, ce n'est pas nécessaire en C++.
par exemple, une mémoire d'impression de 16 x 4 octets.
x/16 0xb0987654