2010-05-11 3 views
2

Je suis en train de créer une application pour Windows XP en utilisant la chaîne d'outils MinGW et elle se bloque parfois de façon inattendue. Donc, j'essaye d'utiliser un débogueur (Gdb) mais le programme se termine avec le code 03 avant que quelque chose n'arrive. En fait, tout ce que je vois de GDB est:Le programme se bloque dans le débogueur avant que quoi que ce soit se produit

[Nouveau 3184.0x7b8 fil]
[Nouveau fil 3184.0xef8]

programme est sorti avec le code 03.

Je soupçonne que il y a quelques liens dynamiques échoués d'une dépendance (qui sont Qt, VTK, et ITK, tous construits avec MinGW). Cependant, cela ne se produit pas lorsque je lance le programme normalement. Ou si cela arrive, il semble être intermittent et bien après que le programme est lancé et en cours d'exécution. REMARQUE: j'utilise également Cmake pour la compilation croisée.

Que dois-je faire? Que puis-je essayer?

Répondre

2

Ajoutez un rappel via signal(SIGABRT, <callback>) pour intercepter l'appel avant l'arrêt du processus. Si cela se produit avant que vous n'ayez atteint main(), vous devrez peut-être recourir à une supercherie statique et compilateur statique pour l'attraper.

+0

Ah, c'est une bonne idée. Merci. – Tim

+0

Ouais. Je devais comprendre ceci quand notre macro assert a été redirigée vers la macro définie dans . C'est génial. – MSN

+0

Cool, je vous remercie pour une bonne idée, @MSN, je dois essayer moi-même :) – mingos

0

Le code 3 est généralement renvoyé sur une erreur de segmentation. Essayez de passer à Linux et de déboguer le programme avec une clôture électrique. Cela pourrait vous donner un aperçu supplémentaire.

+0

Merci pour le conseil, mais les accidents ne se produisent pas n'importe où mais dans Windows. – Tim

Questions connexes