staging.inyokaproject.org

IDE textbasiert

Status: Gelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

ragoutc

Anmeldungsdatum:
15. Januar 2006

Beiträge: 127

Hallo zusammen,

gibt es eigentlich eine textbasierte IDE für bash oder python?

Also eine Möglichkeit, Code Zeile für Zeile auszuführen und dabei auch den Inhalt von Variablen zu untersuchen?

Grüße Ragoutc

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Für Python gibt es mit pdb einen Debugger: https://docs.python.org/3/library/pdb.html - damit kann man gezielt Breakpoints setzen, Variablen beobachten, Code in Einzelschritten ausführen usw. - ich mag das Debugging-Interface, das VS Code darauf aufbauend anbietet und es gibt für fast jeden besseren Editor bzw. IDE Möglichkeiten pdb anzubinden, wenn man da andere Vorlieben hat.

Ansonsten reicht es ggf. schon Python in den REPL droppen zu lassen, wenn das Skript durchgelaufen ist bzw. eine Exception geworfen hat - stell dir z.B. sowas vor:

1
2
3
4
#!/usr/bin/env python3

for divisor in range(-5,5):
    print(10 // divisor)

Und dann startest du das Skript so:

$ python3 -i test.py
-2
-3
-4
-5
-10
Traceback (most recent call last):
  File "/home/alexander/projects/python/test/test.py", line 4, in <module>
    print(10 // divisor)
ZeroDivisionError: integer division or modulo by zero 

Darauf hin landest im REPL, sobald das Skript den ZeroDivisionError geworfen hat, kannst dir den Wert von divisor ansehen usw.:

1
2
>>> divisor
0

Eine andere Möglichkeit wären IPython bzw. bpython, die beide einen etwas aufgebohrten REPL bieten mit der Möglichkeit sich schrittweise einem funktionierenden Skript anzunähern ohne den Umweg über extra Textdateien gehen zu müssen.

Für die Bash gibt es da auch Möglichkeiten zum Debugging, aber da ist die Introspektion stärker eingeschränkt, vgl. z.B. https://www.baeldung.com/linux/debug-bash-script

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

ragoutc schrieb:

gibt es eigentlich eine textbasierte IDE für bash oder python?

Also eine Möglichkeit, Code Zeile für Zeile auszuführen und dabei auch den Inhalt von Variablen zu untersuchen?

Ich nutze zum Debuggen von Shell-Skripten gerne diese Konstruktion:

1
2
3
4
5
#!/bin/sh

[ -z "$DEBUG" ] || set -x

# Rest des Skriptes

Dann kann man das Skript z.B. auf eine dieser Arten aufrufen und erhält die Ausgaben aller ausgeführten Kommandozeilen:

1
2
3
4
$ DEBUG=x das-skript arg1 arg2
$ # oder
$ export DEBUG=w
$ das-skript arg1 arg2

Man kann natürlich auch direkt mit der Shell aufrufen, z.B. sh -x pfad/das-skript arg1 arg2 aber das Schöne an meiner Lösung ist, dass der Debug-Schalter an weitere aufgerufene Skripte weiter gereicht wird, so dass man die Ausgaben von allen bekommt.

PS: für die bash kann man auch die Shell-Option "extdebug" und den Kommandozeilenschalter "--debugger" nutzen. Da ich die meisten Skripte mit der sh schreibe, nützt mir das allerdings nichts.

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

Für Z-Shell gibt es zshdb. Für Bash gibt es zwar auch bashdb, aber nicht in Ubuntu (nur ein Paket für 18.04 ist in diesem PPA vorhanden). ShellCheck ist oft auch sehr hilfreich.

Antworten |