compilation et exécution ok, mais erreur sous gdb
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
Code:
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 |
classe.cpp
Code:
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;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8
| #include <iostream>
#include "classe.hpp"
int main()
{
std::cout << "Un simple test..." << std::endl;
return 0;
} |
Les sources originales ont été "allégées" pour être présentées sur le forum, ce qui explique l'inutilité des variables globales.
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 :
Code:
1 2 3
|
pVect = new std::vector<int>(4); // erreur
pVect = new std::vector<int>; // ok |
Voici la copie de la console de gdb :
Code:
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 :
Code:
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] |
J'utilise gdb 6.8 avec code::blocks à jour, le tout sous XP.
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.