Re: frage zu buch

From: Oliver Fromme <olli(at)secnetix.de>
Date: Fri, 16 Mar 2001 13:54:40 +0100 (CET)

joerch <helix(at)mayn.de> wrote:
> ich habe mir hier das schoene buch "advanced programming in the unix environment
> "
> von w.r. stevens gekauft.
>
> jetzt schreibt der author, dass alles im buch auf 4.3+bsd basiert, was ein nicht
>
> wirklich existierendes system ist, sondern irgentwo zwischen bsd net 2 und dem
> 4.4bsd liegt.

Deine Zeilen sind ziemlich seltsam umgebrochen (hab's ab-
sichtlich nicht korrigiert, damit Du's sehen kannst).
Üblicherweise wird empfohlen, nach spätestens 72 Zeichen
eine neue Zeile anzufangen. Wenn Du das nicht manuell
machen willst, kannst Du /usr/bin/fmt verwenden oder par
(ist in den Ports).

Im folgenden korrigiert.

> da soweit ich weiss freebsd, bzw. die aktuellen bsdvarianten
> alle auf dem 4.4bsd-lite basieren, ist meine frage einfach,
> wie bekomme ich heraus, ob die programmbeispiele funktionieren

Ausprobieren. :-)

> oder welche grafierenden aenderungen sich seit dem erscheinen des
> buches
> ergeben haben.

Die kanonische Antwort würde hier vermutlich "UTSL" lauten
(Use the Source, Luke!).

> ;) schon das erste listing funktioniert nicht auf meiner
> fbsd4.2 kiste ;)
> habe leider noch keine erfahrnung mit betriebssystemen und
> c programmierung, aber ich bin willig und starkoepfig das
> zu lernen.

Das ist schonmal eine gute Voraussetzung.

Bei konkreten Verdachtsfällen kannst Du einfach erstmal in
die betreffende manpage schauen. Nicht nur jedes Kommando
hat unter FreeBSD eine manpage, sondern auch jeder Syscall
und jede Libraryfunktion.

In einigen manpages sind auch Informationen zur "History"
der betreffenden Funktion zu finden.

Schließlich findest Du auf http://www.freebsd.org/ auch
eine Sammlung von manpage-Sätzen aus diversesten histori-
schen Systemen. Dort kannst Du z.B. gucken, was in einer
bestimmten manpage unter 4.2BSD stand und das mit dem
aktuellen Stand von FreeBSD vergleichen.

> wenn ich weiss wo ich schauen kann, les ich mir auch jeden text durch, also ich
> erwarte keine loesungen, nur ansatzpunkte.

Ich hoffe, ein paar geliefert zu haben. :-)

> ausserdem bringt er mir ein Segmentation fault (core dumped), wo er mir
> eigentlich eine errormsg bringen sollte, deswegen ist meine andere
> frage, was genau ein seg-fault ist.

Das bedeutet i.allg., daß das Programm versucht hat, auf
eine Stelle im Speicher zuzugreifen, auf die es nicht zu-
greifen darf (weil die Stelle nicht zum Programm gehört,
oder weil sie read-only ist). Typischer Fall ist z.B. die
Dereferenzierung eines Nullpointers. Häufig sind es auch
Folgefehler, die auf ein Problem hindeuten, das weiter
zurückliegt im Programmablauf (z.B. ein Pointer läuft
"Amok", irgendwo wurde zu wenig Speicher reserviert o.ä.);
in solchen Fällen kann es schon kniffliger sein, dem auf
die Schliche zu kommen.

Compilier das Programm doch mal mit -g (und ohne -O), und
achte darauf, daß Deine Resource-Limits für Corefiles nicht
auf null gesetzt sind (je nach Shell "unlimit" oder
"ulimit"). Wenn das Programm dann mit SIGSEGV stirbt,
sollte es eine Datei <binary>.core hinterlassen.

Dann gib mal ,,gdb <binary> <binary>.core`` ein. Am gdb-
Prompt tippe mal "where". Dann kriegst Du einen Stack-
trace, der Dir schonmal ganz genau sagt, an welcher Stelle
der SIGSEGV ausgelöst wurde. Mit "print" kannst Du Dir
auch Variableninhalte zum Zeitpunkt des Unglücks anzeigen
lassen. gdb bietet noch eine Menge anderer Features, die
Du nach und nach bestimmt kennenlernen möchtest. ;-)

Wenn Du das Problem nicht findest, es aber auf ein über-
schaubares Codefragment eingrenzen kannst, kannst Du das
Fragment auch gerne mal hierher schicken.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 16 Mar 2001 - 13:54:42 CET

search this site