Forum: Compiler & IDEs STM8 / VS Code / GDB: "Exeption occurred" in der ersten Zeile beim Debugging


von Viktor B. (coldlogic)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
Gleich zum Thema: hat jemand von euch erfolgreich eine Toolchain aus 
Visual Studio Code, SDCC, OpenOCD und GDB aufgebaut und zum Debuggen 
verwendet? Ich bin nach der Anleitung vorgegangen : 
https://github.com/hbendalibraham/stm8_started , ging auch beim ersten 
Mal gut. Beim zweiten allerdings (ein paar Tage und ein Update des VS 
Code später) zeigt VS Code mir beim Starten des Debuggers die erste 
Zeile des main.c rot markiert an mit der Aufschrift "Exeption occurred". 
Also von vorne, der Vollständigkeit halber:

- Ich starte OpenOCD mit
1
openocd -f interface/stlink.cfg -f target/stm8s207.cfg -c "init" -c "reset halt"
Das Terminal antwortet
1
Open On-Chip Debugger 0.10.0+dev-01337-g07df04b3-dirty (2020-07-23-19:53)
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
adapter speed: 300 kHz
6
7
Warn : Transport "swim" was already selected
8
srst_only separate srst_gates_jtag srst_open_drain connect_deassert_srst
9
10
Info : STLINK V2J35S7 (API v2) VID:PID 0483:3748
11
Info : Target voltage: 3.230219
12
Info : clock speed 800 kHz
13
Info : starting gdb server for stm8s207.cpu on 3333
14
Info : Listening on port 3333 for gdb connections
15
target halted due to debug-request, pc: 0x00006000
16
Info : Listening on port 6666 for tcl connections
17
Info : Listening on port 4444 for telnet connections
Der lebt, also starte ich das Debuggen mithilfe von VS Code, der Eintrag 
in launch.json lautet wie in der verlinkten Anleitung. Das Terminal mit 
OpenOCD reagiert mit
1
Info : accepting 'gdb' connection on tcp/3333
Verbindung ist da, allerdings kann ich nichts debuggen, weil der PC auf 
der ersten Zeile verharrt, wo man ein Breakpoint setzen kann (also entry 
point). Das Debug Terminal des VS Code gibt gleich einen Wasserfall an 
Meldungen aus, diese hab ich dem Post angehängt. Es fällt auf:
1
warning: No executable has been specified and target does not support\ndetermining executable automatically.  Try using the \"file\" command
 Wie bitte? Ich kann nicht mal ein MI-Befehl dazu finden (vgl. 
https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_228.html). Das 
sollte die VSC Extension (C/C++ 0.29.0) selber gemacht haben, und zwar 
wegen des Eintrags im launch.json "program": "${workspaceRoot}/main.elf" 
.
1
Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
 WTF soll das denn sein? Ein paar Zeilen früher steht doch
1
1: (745) ->~"The target architecture is set automatically (currently stm8)\n"
 Dazu ist das stm8-gdb, der SOLL nur eine Arch können.

Hat jemand irgendwelche Ideen?
MfG, Viktor

von Markus F. (mfro)


Lesenswert?

So wie ich das sehe, zeigt dein Log oben an, daß der Code richtig 
geladen und gestartet wird und auf dem Breakpoint stehen bleibt.

Der Crash kommt wohl eher aus dem VS Code.

von M. K. (Gast)


Lesenswert?

Viktor B. schrieb:
> eine Toolchain aus
> Visual Studio Code, SDCC, OpenOCD und GDB

Ich habe dafür den IAR genommen, der bis 8K Codesize nix kostet.
Völlig problemlos und sehr entspannend.
Alles in einem Guß.

von Jim M. (turboj)


Lesenswert?

Bei OpenOCD Problemen hilft oft der "-d3" Log.

Ansonsten sieht man nicht ob OpenOCD grade beschäftigt ist oder nicht...

von samuel (Gast)


Lesenswert?

Ich kann dir sehr das Plugin Cortex-Debug für VS Code empfehlen. Das 
nutze ich abseits von Cortex-M Controllern auch für RISC-V problemlos, 
sollte also auch mit STM8 klar kommen. Es übernimmt auch das Starten und 
Stoppen von Openocd und ist ingesamt einfacher zu konfigurieren.

Dagegen hatte ich mit dem eingebauten VS Code C++ Debug, was ich zuerst 
für RISC-V nutzen wollte, nur Probleme.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.