Wie debugge ich einen Port

serie300

Well-Known Member
Hallo
bei mir dumped eines der Programme aus den Ports ( net/pload ) immer beim Start. Bevor ich einen PR schreibe, wollte ich mal selber reinschauen (muß ja nicht sein, daß das beim Maintainer auch dumped). lldb ...work/pload ergibt als ersten Hinweis libc.so.7`strncmp + 16 ... . Die Funktion kommt auch nur einmal im Code vor :-). Da ich in den letzten Jahren Compiler Sprachen nur für Microcontroller Programmierung mit IDEs (Keil) benutzt habe ist mir der lldb fremd. Dann habe ich erstmal versucht, mir mit zusätzlichen Statements die Argumente von dem strncmp ausgeben zu lassen. Allerdings wird der Code beim Make überschrieben, sodaß da kein print mehr ist. Wie würdet ihr da rangehen ? Gibt's für den lldb ein grafisches Frontend ? Wie bekomme ich das 'make' dazu Debug Code zu generieren. Oder sagt ihr "Laß es, schreib einen PR."
 
Gibt's für den lldb ein grafisches Frontend ?
Ja. Gibt es. Also zumindest so eine Text-GUI (lldb ist ja ein Kommandozeilenprogramm).
Zuerst lädst Du ja Dein Programm in den Debugger mit
lldb -- /path/to/program
Dann hast Du die Kommandozeile vom lldb. Es gibt dann auch das Kommando
gui
womit der dann eine textbasierte GUI startet.

Wie bekomme ich das 'make' dazu Debug Code zu generieren.
In der Datei /etc/make.conf kannst Du die Variable WITH_DEBUG_PORTS setzen:
WITH_DEBUG_PORTS=net/pload
Siehe dazu auch die Manpage von ports
Da gibts auch ein Beispiel zu (Example 6: Debugging Ports).

Allerdings wird der Code beim Make überschrieben, sodaß da kein print mehr ist.
Wenn Du im Verzeichnis
/usr/ports/net/pload

bist, dann würde ich kleinschrittig erst mal ein
make extract
machen, um den Sourcecode nach /usr/ports/net/pload/work zu entpacken und dann ein
make patch
damit auch die notwendigen FreeBSD-spezifischen Pachtes im Sourcecode sind.
Dann kannst Du Deine Änderungen einfügen (also Dein printf - Aufrufe usw.)
Wenn Du jetzt einen Aufruf von
make
machst, solltest Du die fertige Verzeichnisstruktur unter
/usr/ports/net/pload/work/stage
finden. Das kannst Du dann im Prinzip auch direkt nehmen, um das Programm zu testen/debuggen/wasauchimmer.
 
Zurück
Oben