ubuntuusers.de

bashdb

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

uboat

Anmeldungsdatum:
23. Juni 2009

Beiträge: 178

Hallo,

Ich brauche Hilfe bei der Installation und Verwendung von bashdb. Zuerst habe ich das Paket bashdb mit apt-get installiert. Nun habe ich den Befehl

1
bash --debugger -c "set|grep -i dbg"

ausgeführt, der angeblich das Programm starten soll: http://archive09.linux.com/feature/153383 Allerdings bekomme ich folgenden Fehler:

bash debugger, bashdb, release 4.2-0.8

Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Rocky Bernstein
This is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.

** Internal debug error _Dbg_is_file(): file argument null
/usr/share/bashdb/lib/filecache.sh: line 238: _Dbg_filenames[$fullname]: bad array subscript

Was ich schließlich erreichen will ist, dass der debugger an einer bestimmten Stelle anhält. Das ist eine bestimmte Zeile in einer importierten Funktion.

uboat

uboat

(Themenstarter)

Anmeldungsdatum:
23. Juni 2009

Beiträge: 178

Ich habe bereits versucht in das Skript an der Stelle die while Schleife einzufügen, die hier beschrieben wird: http://bashdb.sourceforge.net/bashdb.html#Debugging-a-Running-Shell-Script Ich sende das SIGINT mit Steuerung+C. Allerdings hört das Programm auf, nachdem ich mit break aus der Schleife ausgebrochen bin; Das Skript sollte aber weiterlaufen.

 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
Di 10. Feb 13:26:05 CET 2015
Di 10. Feb 13:26:07 CET 2015
Di 10. Feb 13:26:09 CET 2015
Di 10. Feb 13:26:11 CET 2015
^CProgram received signal SIGINT (2)...
->0 in file `./my.functions.sh' at line 0
##1 FUNC1("testfile", "A", "B", "C", "D", "E") called from file `./my.origin.functions.sh' at line 413
##2 FUNC2("testdir") called from file `./test1.sh' at line 60
##3 test_schema("sprint", "SPRINT", "1", "dir1  dir2 dir 3") called from file `./test1.sh' at line 99
##4 main() called from file `./test1.sh' at line 104
##5 main() called from file `./test1.sh' at line 0
bashdb<0> eval break
bashdb<1> list
** File "/home/joe/Projects/workspace_trunk/myproject/my.functions.sh" not found in read-in files.
** See 'info files' for a list of known files and
** 'load' to read in a file.
bashdb<2> s
(/home/joe/Projects/workspace_trunk/myproject/my.functions.sh:154):
154:	  while : ; do
bashdb<3> s
(/home/joe/Projects/workspace_trunk/myproject/my.functions.sh:155):
155:	        date=$(date)
bashdb<4> s
(/home/joe/Projects/workspace_trunk/myproject/my.functions.sh:1):
1:	#!/usr/local/bin/bash
bashdb<5> s
Debugged program terminated normally. Use q to quit or R to restart.
bashdb<6>

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

uboat schrieb:

bash debugger, bashdb, release 4.2-0.8

Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Rocky Bernstein
This is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.

** Internal debug error _Dbg_is_file(): file argument null
/usr/share/bashdb/lib/filecache.sh: line 238: _Dbg_filenames[$fullname]: bad array subscript

Schau mal auf das Copyright. Bist Du sicher, dass das Projekt überhaupt noch lebt?

Was ich schließlich erreichen will ist, dass der debugger an einer bestimmten Stelle anhält. Das ist eine bestimmte Zeile in einer importierten Funktion.

Ich benutze ja immer die Shell-Option x - das hat bisher gereicht, auch, wenn man damit die Shell nicht stoppen kann (das ginge z.B. mit read). Das schöne an Skriptsprachen ist ja, dass man die Programme beliebig modifizieren kann.

Ciao

robert

uboat

(Themenstarter)

Anmeldungsdatum:
23. Juni 2009

Beiträge: 178

Ich arbeite gerade mit set -x, if Abfragen und read, aber das ist Mist, weil ich nicht durch den Code steppen und mir die Variablen ansehen kann. Insbesondere ändere ich so den Code und baue ggf. Fehler ein. Für jede Programmiersprache die ich sonst verwende gibt es eine vernünftige Entwicklungsumgebung mit zugehörigen Tools, nur für (ba)sh nicht, obwohl das eine verbreitete Sprache ist, die zudem sehr sensibel ist was Syntaxfehler angeht *grml*. Für mich reicht es nicht wenn ich ernsthaft damit arbeiten will.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

uboat schrieb:

Ich arbeite gerade mit set -x, if Abfragen und read, aber das ist Mist, weil ich nicht durch den Code steppen und mir die Variablen ansehen kann.

Du siehst aber die Werte, die benutzt werden, wenn Du mit -x ausführst.

Insbesondere ändere ich so den Code und baue ggf. Fehler ein. Für jede Programmiersprache die ich sonst verwende gibt es eine vernünftige Entwicklungsumgebung mit zugehörigen Tools, nur für (ba)sh nicht, obwohl das eine verbreitete Sprache ist, die zudem sehr sensibel ist was Syntaxfehler angeht *grml*.

Das liegt daran, wie die Shell arbeitet (die verschiedenen Expansion). Das ganze könnte Dir ein Hinweis sein, denn ...

Für mich reicht es nicht wenn ich ernsthaft damit arbeiten will.

... die bash war auch nie dazu gedacht größere Programme damit zu schreiben. Dafür ist das Typsystem viel zu rudimentär. Wenn Du also im größeren Stil programmieren willst, dann such Dir eine Alternative, z.B. Ruby oder Python.

Ciao

robert

uboat

(Themenstarter)

Anmeldungsdatum:
23. Juni 2009

Beiträge: 178

rklm schrieb:

... die bash war auch nie dazu gedacht größere Programme damit zu schreiben. Dafür ist das Typsystem viel zu rudimentär. Wenn Du also im größeren Stil programmieren willst, dann such Dir eine Alternative, z.B. Ruby oder Python.

Mir musst du das nicht erzählen ☺ Ich würde den Kram sofort in eine andere Sprache portieren wenn ich könnte und dürfte. Aber bis dahin will ich einen Debugger haben, weil das Fehlersuchen gefühlt 90% der Programmierung mit bash Skripten ausmacht. Ich werde Mal versuchen bashdb zum Funktionieren zu bekommen.

Antworten |