Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1361 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  [gdb] impossible désassembler

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[gdb] impossible désassembler

n°853244
Misc
Posté le 18-09-2004 à 17:19:21  profilanswer
 

Bonjour,
j'ai un programme en assembleur que je modifie progressivement. Entre chaque phase, je vérifie qu'il marche encore en le compilant avec GCC et l'exécutant, j'utilise aussi GDB pour le débugger et le désassembler.
A présent j'ai deux versions du programme : une qui fonctionne normalement, et une que je ne peux plus désassembler avec GDB. J'obtiens l'erreur suivante :

(gdb) disass main
No function contains specified address.


Alors que dans la version précédente, ça fonctionne bien.
 
Je compile avec gcc version 3.2.2 et l'option -g, sur un système linux (redhat 9). Savez-vous d'où peut venir le problème, et surtout comment désassembler le programme ?
 
J'ai eu une idée : dans le "man" de GCC, il est précisé que l'option -fomit-frame-pointer (que je n'utilise pas) peut rendre le debuggage impossible sur certains systèmes. Or au cours de mes modifications, j'ai supprimé l'utilisation du registre %ebp partout où c'était possible. Cela pourrait-il causer le problème ? (Oui je ne connaissais pas cette option au début, sinon je ne l'aurais pas fait à la main... D'ailleurs je ne connais pas grand chose à l'assembleur et à GDB/GCC alors soyez patients s'il vous plaît...)
 
Enfin, merci d'avance, et excusez-moi si la question a déjà été posée: j'ai fait une recherche infructueuse sur le mot "désassembler" dans ce forum.

mood
Publicité
Posté le 18-09-2004 à 17:19:21  profilanswer
 

n°853309
Taz
bisounours-codeur
Posté le 18-09-2004 à 19:57:14  profilanswer
 

tu peux tout simplement utiliser gcc pour désassembler à la source (plutot ne pas assembler du tout)
 
gcc -S machin.c et hop tu as un petit fichier.s :D
 
mais qu'est-ce qui te fais croire que ressasser de l'assembleur te fera debugger ton programme ?

n°853317
Misc
Posté le 18-09-2004 à 20:27:03  profilanswer
 

Je me suis mal exprimée :)
La source est un fichier .s
Je peux le compiler (avec gcc).
Mais ensuite, je ne peux pas désassembler l'"executable" avec gdb.
 
Plus précisément: j'y arrivais jusqu'à un certain point, et après quelques modifs bénignes, ça ne fonctionne plus. Le programme marche toujours ! Mais j'ai besoin de le désassembler en hexa pour un projet scolaire.

n°853320
Taz
bisounours-codeur
Posté le 18-09-2004 à 20:28:31  profilanswer
 

euh c'est quoi l'intérêt ? si t'as le source en assembleur ... je comprends pas ce que tu veux faire ...

n°853330
Misc
Posté le 18-09-2004 à 20:50:51  profilanswer
 

je veux l'hexa de l'executable :) Ya quand même des différences entre l'assembleur que j'écris dans le .s et celui que je désassemble dans gdb :) Et gdb me permettrait de  le désassembler en hexa.
De plus, même en dehors de ça, si je veux débugger le programme il faut bien que j'y mettre des breakpoint... Et comment faire, sans avoir accès aux instructions et à leurs adresses ?
De toute façon j'ai besoin de le désassembler, et j'y arrive pas, voilà. Encore désolée pour la confusion.

n°853343
printf
Baston !
Posté le 18-09-2004 à 22:46:12  profilanswer
 

[:ciler]

n°853418
slvn
Posté le 19-09-2004 à 11:01:02  profilanswer
 

bah prends le problem dans l'autre sens: qu'est ce que t'as rajouter pour qu'il ne te disassemble pas ta fonction?
 
est ce que au moins, les autres fonctions sont tjrs dessassemblable??

n°853484
Misc
Posté le 19-09-2004 à 13:01:43  profilanswer
 

Non non, le programme n'est plus désassemblable, du tout. Quelle que soit la fonction ou l'étiquette (je ne suis pas sûre pour la terminologie...) que j'essaye.


Message édité par Misc le 19-09-2004 à 13:02:21
n°853494
slvn
Posté le 19-09-2004 à 13:21:24  profilanswer
 

tentes:
 
ld --print-map <obj>
objdump -D  <obj>
 
 
est ce que t'aurais pas mis une option d'optimization un peut particuliere :/

n°853568
Misc
Posté le 19-09-2004 à 15:23:34  profilanswer
 

Ces deux commandes m'affichent vraiment vraiment vraiment beaucoup de choses :/ Je te remercie je vais consulter la documentation pour savoir ce que ça fait. Il y aura sûrement ce que je cherche, dedans.
Pour les optimisations, hé bien, à la compilation non, je fais bêtement tout à la main, mais ce que j'ai optimisé ça  ne casse pas des briques, je me contente de retirer ce qui peut être retiré...
Merci beaucoup pour ces commandes, comme je l'ai précisé au début je n'y connais pas grand chose... Merci :)

mood
Publicité
Posté le 19-09-2004 à 15:23:34  profilanswer
 

n°853572
slvn
Posté le 19-09-2004 à 16:20:25  profilanswer
 

print-map pour voir la liste des symboles
objdump pour dessassembler.
 
regarder si tu trouves bien ta fonction dans les deux et son address.
 
tu mets comme option de compilation en plus?
 
qu'est ce que tu as fait pour que "avant ca marche" et "apres ca marche pu"

n°853579
slvn
Posté le 19-09-2004 à 16:44:58  profilanswer
 

en fait il faut faire un :
objdump -t <obj> pour ne voir que la liste des symboles. deja regarde si tu vois bien les tients.
 
sinon, j'aurais tendance a dire qu'il te manque un .globl devant tes labels, ou qq chose du genre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  [gdb] impossible désassembler

 

Sujets relatifs
[ASP.NET] et [ACCESS] - raaahh impossible à inserer des donnéesImpossible de modifier un site type Kitgrafic...help !!
Impossible de communiquer avec mon modem GSM!![C++][GDI+] Impossible de charger une image != .bmp depuis 1 ressource
Impossible de lancer un script VB[ACCESS] Impossible de mettre un combo box.
Impossible de scroller une div qd une image se trouve en dessous ?[CPAN] Impossible d'installer Tk
Impossible d'intégrer MSCOMCTL.OCX dans un projet ?utilisation du pool de connexions proxool : autocommit impossible !?
Plus de sujets relatifs à : [gdb] impossible désassembler


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR