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 : 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
classe.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;
}
main.cpp
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;
}
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 : 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
Voici la copie de la console de gdb :
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 :
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]
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.