Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Blutiger Anfänger!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
21.04.2010, 00:19 Uhr
Hans
Library Walker
(Operator)


@ao: Du hast es in letzter Zeit aber mit dem Thema Debugger, stelle ich fest. Aber leider hast Du ja recht und auch Debugging will gelernt sein. Wie wäre es denn, wenn Du ein Buch darüber schreibst?
Es gibt bzw. gab zwar mal einen Titel "Debugging C" von Robert Ward, aber der ist im englischen Original von 1986, in deutscher Übersetzung von 1988, und deshalb inzwischen wahrscheinlich total veraltet. Vor allem auch, weil Quelltextdebugger zu dieser Zeit erst aufkamen, und man sich zu dieser Zeit beim debuggen noch viel mit dem Assemblercode herumschlagen musste, den der Compiler produziert hat. Deshalb wird im genannten Buch auch dem DOS-Programm debug eine Menge Aufmerksamkeit gewidmet.

Ein anderes Problem ist, wenn der Debugger in einem Buch mal erwähnt wird, das die Autoren dann zwar die einzelnen Befehle beschreiben, aber keine Ahnung haben, wie man die sinnvoll einsetzt, sofern sich die Funktion nicht beim ersten ausprobieren erschliesst. Aber was kann man mit Breakpoints anfangen? Oder wie findet man Memory-leaks oder Pufferüberläufe oder falsch verbogene Zeiger?

Und für Profis: Was sind die Schwächen des Debugger, d.h. welche Fehler findet man damit nur sehr schwer oder gar nicht? - Bzw. nur in Verbindung mit weiteren Hilfsprogrammen?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 21.04.2010 um 00:26 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
21.04.2010, 09:11 Uhr
ao

(Operator)



Zitat von Hans:
@ao: Du hast es in letzter Zeit aber mit dem Thema Debugger, stelle ich fest.

Jeder braucht seine fixe Idee

Nein, es ist so, ich selber verbringe 40 Stunden in der Woche mit Softwareentwicklung. Das teilt sich grob geschätzt auf in 40 % Entwurf, 20 % Codeschreiben und 40 % Testen und Fehlersuchen, und davon ist der größte Teil Source-Level-Debugging. Und wenn ich mich hier auf der Etage so umgucke, glaube ich, dass das nicht untypisch ist.

Außerdem sehe ich, welcher Aufwand von anderen Leuten getrieben wird, um uns Softwareentwicklern das Debuggen zu ermöglichen. Praktisch jede IDE bringt eine Debugger-Unterstützung mit - nur zum Spaß macht das niemand. Auf Mikrocontrollern wird sogar teure Siliziumfläche für ein Debugger-Interface "verschwendet", und zwar auf jedem einzelnen Chip, da werden keine speziellen Entwicklerversionen hergestellt. Das zeigt, wie wichtig das in der Praxis ist.

Auf der anderen Seite wird das Thema von denen, die Programmierung lehren (Informatiklehrer, Dozenten, Buchautoren) derart nachlässig behandelt, dass die Lernenden einfach den Eindruck gewinnen *müssen*, das sei entweder nutzlos oder nur was für Freaks.

Und so kommt es, dass 90 Prozent der Anfängerfragen, die hier gestellt werden, mit einem Debugger im Nu beantwortet werden können. Die Leute wären mit einem Schlag einen Riesenhaufen kleiner Probleme los, und viele von den großen wären einfacher.


Zitat:
Wie wäre es denn, wenn Du ein Buch darüber schreibst?

Wer weiß, wenn ich mal Zeit habe ...

Nee, mal im Ernst, vielleicht kann man das hier als Gemeinschaftsprojekt entstehen lassen. Ich kann Debugger benutzen, aber ich weiß nicht viel über das Innenleben. Außerdem bin ich zu windows-lastig, um alleine einen guten Querschnitt darstellen zu können.

Und dann das Ganze als Wikibook ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
21.04.2010, 18:15 Uhr
0xdeadbeef
Gott
(Operator)


Naja, es ist ne andere Generation. Du musst sehen, dass zu der Zeit, als heutige Dozenten Programmieren gelernt haben, Debugger weit von dem entfernt waren, was wir heute kennen und lieben, und auch weit weniger verbreitet.

Zwar gab es in den 1970ern auf einigen Mainframes bereits Debugger, und in den 80ern auf BSD auch dbx, was ein Vorbild für heutige Debugger war (wenn auch weit weniger mächtig als heutige Debugger), aber zunächst hatten Studenten wohl eher selten Zugriff auf Mainframes, und später konnten sich die wenigsten eine UNIX-Workstation leisten - stattdessen gab es MS-DOS.

Ich weiß nicht, ob du mal auf einer DOS-Maschine den mitgelieferten "Debugger" benutzt hast, aber...naja, wenn nicht, ist es vielleicht auch besser so. Es gibt Dinge, die den Glauben an das Gute im Universum schneller zerstören als die katholische Kirche.

Worauf ich hinaus will: Die Leute, die heute Informatik lehren, haben damals nicht lernen können, wie wichtig ein Debugger ist, weil er damals nicht wichtig war. Zudem konnten ihre Professoren sie nicht über Debugger aufklären, weil es zu der Zeit, als sie ihr Fach gelernt haben, keine Debugger gab. Im Zweifel waren es damals eh Mathematiker; Informatik ist ja noch nicht allzu lange ein eigenständiges Fach.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
21.04.2010, 21:41 Uhr
ao

(Operator)


Hab ich jetzt irgendwelche Ironiesmilies übersehen?

Wo, wenn nicht an Universitäten, haben die Leute Zeit, mit Software herumzuspielen und neue Funktionen zu entdecken?

Und gerade Professoren und Forscher sollten doch imstande sein, im Lauf einer 30jährigen wissenschaftlichen Karriere etwas Neues hinzuzulernen.

In den 80ern, genauer gesagt 1986 oder 87, hatte ich einen PC mit Turbo-Pascal 3.0, und das hatte einen funktionsfähigen Source-Level-Debugger an Bord.

Dieses unsägliche DOS-Debug ist allerdings eine Katastrophe, noch schlimmer als Edlin. Debug gibts übrigens auf Windows 7 immer noch. Edlin nicht mehr.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
21.04.2010, 23:13 Uhr
0xdeadbeef
Gott
(Operator)


Ich wollte den Zustand nicht verteidigen, nur beschreiben.

Wenn du mal in einer C++-Vorlesung gesessen hast, wirst du, sofern deine Professoren mit meinen vergleichbar waren, vermutlich wissen, dass es eine gewisse Diskrepanz zwischen Sollen und Sein gibt (C mit Klassen ). Forscher lernen sicher neue Dinge hinzu, aber halt hauptsächlich auf dem Gebiet, auf dem sie forschen. Ich kann jetzt nicht abschätzen, wie viele Forscher am Source-Level-Debugger geforscht haben oder wie viele an weitergehenden Techniken forschen, aber wenn du nicht gerade einen erwischst, der das tut, naja...

Zumal viel informatische Forschung ja nach wie vor mathematisch ist - nimm etwa formale Sprachen oder Algorithmik. Debugger sind ein Werkzeug für die Praxis, und wenn du dich mit theoretischer Forschung herumschlägst - so wichtig diese ist - kommst du damit nicht dauernd in Berührung.

Studenten können (bzw. konnten - das System ist ja in den letzten Jahren stark verschult) natürlich neben der Uni Dinge lernen und tun es auch, aber Debugger sind, was das Freizeitlerninteresse angeht, nicht unglaublich faszinierend. Wenn es noch dazu wenig Literatur zu dem Thema gibt und man sich bei seinen kleinen Projekten auch mit Trace-Statements durchmogeln kann, lernen es die meisten halt erst dann, wenn sie nach der Uni im Job damit konfrontiert werden.

Es gefällt mir genau so wenig wie dir, und ich wäre gern früher darauf hin- und darin eingewiesen worden, aber so ist die Realität halt nicht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
22.04.2010, 09:25 Uhr
ao

(Operator)



Zitat:
Wenn du mal in einer C++-Vorlesung gesessen hast ...


Das hab ich nie. Ich hab noch nicht mal Informatik studiert, sondern Elektrotechnik. Der Prof, der bei uns Informatik las, war ein strenger Verfechter der reinen Lehre, so einen Schweinkram wie C++ hätte der nie angefasst.

In Ingenieurinformatik 1 hieß die Sprache Modula-2. Zum Glück war unter den Studenten ein Compiler im Umlauf, mit dem man die Übungsaufgaben zuhause machen konnte.

II-2 hab ich zwei Jahre später gehört, da hatte er einen neuen Narren gefressen und fuhr auf Ada ab. Hab wirklich selten einen nutzloseren Unterricht erlebt. War für viele ein Grund, sich von Software möglichst zu verabschieden und in Elektronik oder Nachrichtentechnik zu vertiefen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
22.04.2010, 17:27 Uhr
Hans
Library Walker
(Operator)


Hi,

@ao: Der Sourcelevel-Debugger, den Du meinst, der kam erst mit Turbo Pascal 4.0, und wie eben festgestellt, 1987 (Quellen: 1, 2). Die 3er Version (und ihre Vorgänger) glänzte(n) durch die IDE, die für damalige Verhältnisse revolutionär war.
Und was das debugging-interface auf Controllern angeht, da nehme ich auch stark an, das es unter dem Strich billiger ist, das interface auf allen Controllern zu realisieren, anstatt eine kleinere Fertigungscharge nur für Entwicklerversionen zu bauen.

Und was Bücher zum Thema debugging betrift, es gibt tatsächlich ein paar relativ aktuelle, aber danach muss man suchen, und sie sind meisst auf Englisch. Das sollte Studenten heut zu Tage zwar nicht mehr sonderlich stören, aber von Schülern in der Mittelstufe würde ich noch nicht erwarten, das die sich mit fremdsprachiger Fachliteratur befassen.

Und die Profs sind ja eh ein Thema für sich. Aber wenn man auch von "grossen Geistern" des Faches liesst, das sie sich mehr auf die Mathematik beschränken, dann ist es nicht verwunderlich, wenn es viele kleinere auch tun. (Und noch weniger werwunderlich, wenn einige davon nicht verstehen, warum integer-multiplikationen mit 2^x schneller sind, wenn man sie mit Bitschiebe-operatoren realisiert...)

Zu Ada fällt mir immer nur die Gräfin ein, nach der die Sprache benannt ist - ansonsten braucht man diese Sprache AFAIK nur, wenn man in der Rüstungsindustrie anfangen will...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
24.04.2010, 22:35 Uhr
Freifaller



Ich melde mich mal zurück.

@Hans

Ich habe mir die von dir vorgeschalgene IDE Code::Blocks heruntergeladen und bin wirklich zufrieden damit, danke für den Tip. Es schreibt sich damit viel übersichtlicher, gefällt mir gut.

Ich konnte auch schon viele Fortschritte machen. Die Frage ist nun, welches Buch eignet sich als Folgelektüre von "C in 21 Tagen" um meine Kentnisse zu festigen und zu vertiefen. Gibts da etwas was ihr mir empfehlen könnt? Das Niveau sollte schon noch Anfänger-tauglich sein.

Grüße
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: