Bonjour.
Je cherche à comprendre pourquoi mon programme pose problème à gdb. La compilation se déroule sans erreur et le programme s'exécute normalement, mais gdb me renvoie un "Debugger finished with status 1" et les points d'arrêt ne fonctionnent pas.
classe.hpp
classe.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef CLASSE_HPP #define CLASSE_HPP #include <vector> const int array[] = {1, 2, 3, 4}; const std::vector<int> vect (array, array + 4); class MaClasse { MaClasse(); ~MaClasse(); std::vector<int>* pVect; }; #endif //CLASSE_HPP
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "classe.hpp" MaClasse::MaClasse() { pVect = new std::vector<int>(4); } MaClasse::~MaClasse() { delete pVect; }
Les sources originales ont été "allégées" pour être présentées sur le forum, ce qui explique l'inutilité des variables globales.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <iostream> #include "classe.hpp" int main() { std::cout << "Un simple test..." << std::endl; return 0; }
Le problème disparait si je regroupe tout le code dans un même fichier. Même chose si je supprime les deux variables globales (array et vect dans classe.hpp). Ou bien encore en modifiant l'allocation dynamique dans le constructeur :
Voici la copie de la console de gdb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pVect = new std::vector<int>(4); // erreur pVect = new std::vector<int>; // ok
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Building to ensure sources are up-to-date Build succeeded Selecting target: Debug Adding source dir: E:\developpement\CodeBlocks\projet\vecttest\ Adding source dir: E:\developpement\CodeBlocks\projet\vecttest\ Adding file: bin\Debug\vecttest.exe Starting debugger: done Registered new type: wxString Registered new type: STL String Registered new type: STL Vector Setting breakpoints Debugger name and version: GNU gdb 6.8 Child process PID: 3060 Debugger finished with status 1
J'ai remarqué que le log détaillé de gdb se terminé par un message inhabituel. A toute fin utile, j'en fournis les dernières lignes :
J'utilise gdb 6.8 avec code::blocks à jour, le tout sous XP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 > run gdb: win32_init_thread_list This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. [New thread 3252.0x914]
Le problème vient-il de mon code ou d'une mauvaise configuration de mingw32? Si quelqu'un peut m'apporter quelques éclaircissements, je suis preneur parce que là, je sèche.
Merci d'avance.
Partager