Bonjour,

J'utilise gcc (11.2.0-mingw-w64ucrt-9.0.0-r5), et j'essaie de debugger avec gdb un code Fortran avec CodeBlocks sous Windows 10.

GDB ne semble pas catcher / s'arrêter sur les SIGFPEs. Je n'ai pas souvenir d'un comportement similaire sur des installs plus anciennes (mais j'ai changé de boulot y a quelques mois et je ne peux plus checker).

Voici les options de compil que j'utilise pour le debug (je les liste toutes pour être exhaustif mais la plupart ne devraient rien avoir à voir...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
-g -fcheck=all -fcheck=bounds -fbacktrace -Og -fno-automatic -fdefault-real-8 -fdefault-double-8 -fno-align-commons -Wline-truncation -Wsurprising -ffpe-trap=invalid,zero,overflow -march=native -fmax-errors=3
Voici ce que dit la console de CodeBlockslors de l'appel GDB (pour voir les arguments passés) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Starting debugger: D:\Logiciels\GCC\bin\gdb.exe -nx -fullname -quiet  -args D:/Work/Baro/bin/Debug/BARO.exe
done
Voici maintenant le reste de la sortie console (je passe les infos sur la version etc.)

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[debug]>>>>>>cb_gdb:
[debug]> set confirm off
 
Debugger name and version: GNU gdb (GDB for MinGW-W64 x86_64, built by Brecht Sanders) 11.2
 
[debug]>>>>>>cb_gdb:
[debug]> set width 0
[debug]>>>>>>cb_gdb:
[debug]> set height 0
[debug]>>>>>>cb_gdb:
[debug]> set breakpoint pending on
[debug]>>>>>>cb_gdb:
[debug]> set print asm-demangle on
[debug]>>>>>>cb_gdb:
[debug]> set unwindonsignal on
[debug]>>>>>>cb_gdb:
[debug]> set print elements 200
[debug]>>>>>>cb_gdb:
[debug]> set new-console on
[debug]>>>>>>cb_gdb:
[debug]> set disassembly-flavor att
[debug]>>>>>>cb_gdb:
[debug]> catch throw
[debug]Catchpoint 1 (throw)
[debug]>>>>>>cb_gdb:
[debug]> directory D:/Work/Baro/
[debug]Source directories searched: D:/Work/Baro;$cdir;$cwd
[debug]>>>>>>cb_gdb:
[debug]> py print(1+2)
[debug]3
[debug]>>>>>>cb_gdb:
[debug]> set $fortran_script_dir = 'D:\Logiciels\CodeBlocks\share\codeblocks/images/fortranproject/'
[debug]>>>>>>cb_gdb:
[debug]> source D:\Logiciels\CodeBlocks\share\codeblocks/images/fortranproject/gdb_fortran_extensions_v1.0.py
[debug]>>>>>>cb_gdb:
[debug]> run
[debug]Starting program: D:\Work\Baro\bin\Debug\BARO.exe 
 
Child process PID: 21196
 
[debug][New Thread 21196.0x1408]
[debug][New Thread 21196.0x11f4]
[debug][New Thread 21196.0x51c4]
[debug][Thread 21196.0x51c4 exited with code 2]
[debug][Thread 21196.0x11f4 exited with code 2]
[debug][Thread 21196.0x1408 exited with code 2]
[debug][Inferior 1 (process 21196) exited with code 02]
[debug]>>>>>>cb_gdb:
 
[Inferior 1 (process 21196) exited with code 02]
 
[debug]> quit
 
Debugger finished with status 0
Je vois du "exit with code 02", qui d'après Google semble bien pouvoir correspondre à un souci type SIGFPE ?
Mais derrière GDB / l'IDE n'ont jamais suspendu l'exécution en me mettant le curseur là où il y a un pb (comme je l'attendrais), il ne fait que terminer le truc et du coup ça me sert à rien.
Est-ce que je loupe quelque chose ? Y a-t-il par ailleurs des arguments particuliers à passer à gdb par exemple (mais j'ai vraiment pas souvenir de ça...) ? Autre chose ?

Edit : j'ai ssayé d'ajouter la commande "info signal SIGFPE" lors du lancement de gdb, voici le résultat : normal ou pas ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[debug]> info signal SIGFPE
[debug]Signal        Stop	Print	Pass to program	Description
[debug]SIGFPE        Yes	Yes	Yes		Arithmetic exception
J'ai aussi essayé tour à tour d'ajouter `handle SIGFPE stop nopass`, `handle SIGFPE nostop nopass`, et `handle SIGFPE nostop pass` (avant et après connexion à la cible).

gdb renvoie alors un statut en accord sur la console, mais ça change rien sur le comportement concret lors du debug...

Merci de votre aide.