Prog Aufgabe

Benutzeravatar
Cauchy
Beiträge: 108
Registriert: So 30. Nov 2008, 17:08

Re: Prog Aufgabe

Beitrag von Cauchy »

Hast du dir die .gdbinit Datei angelegt?

https://studium.kit.edu/sites/vab/61913 ... orial.aspx
Thomas
Administrator
Beiträge: 383
Registriert: Do 23. Okt 2008, 20:16
Wohnort: Karlsruhe
Kontaktdaten:

Re: Prog Aufgabe

Beitrag von Thomas »

ja hab ich, ist es eigentlich egal wie ich die nenne so lange die endung .gdbinit is oder muss die iwie besonders heißen? also gdb geht ja auch und ich bekomm auch angezeigt dass momentan kein thread läuft nur wenn ich next ausführe geht das eigentliche programm halt nicht weiter. muss ich dass vllt erst wieder zum laufen bringen?
Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

Re: Prog Aufgabe

Beitrag von salami »

Startest du gdb auch im Ordner root?
Thomas
Administrator
Beiträge: 383
Registriert: Do 23. Okt 2008, 20:16
Wohnort: Karlsruhe
Kontaktdaten:

Re: Prog Aufgabe

Beitrag von Thomas »

ja hab mich an die vorgegebene anleitung gehalten

tmy@tmy:~$ cd ~/os/root
tmy@tmy:~/os/root$ cs161-gdb kernel
GNU gdb 6.0
Copyright 2003 Free Software Foundation, Inc.
GDB 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.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=mips-elf"...
(gdb) p curthread
$1 = (struct thread *) 0x0
(gdb) p *sleepers
Cannot access memory at address 0x0
(gdb) next
The program is not being run.
(gdb) continue
The program is not being run.
(gdb) c
The program is not being run.
(gdb) Quit


so sieht das übrigens aus. vllt das ganze nochmal neu installieren? hab ich zwar schon paar mal gemacht mittlerweile aba vllt hilfts ja^^
Johann
Beiträge: 65
Registriert: So 9. Nov 2008, 20:21

Re: Prog Aufgabe

Beitrag von Johann »

Thomas hat geschrieben:ja hab ich, ist es eigentlich egal wie ich die nenne so lange die endung .gdbinit is oder muss die iwie besonders heißen?
Ich weiß nicht ob ich dich richtig verstehe, aber .gdbinit ist keine Dateiendung, sondern das ist der Name. Ein Punkt im Dateiname an 1. Stelle macht eine Datei unsichtbar, die Datei muss exakt ".gdbinit" heißen!

Zum eigentlichen Problem: Bist du überhaupt sicher, dass der Debugger zum angehaltenen Kernel korrekt verbindet? Steht bei deinem os161 sowas wie "Waiting for debugger" und dann irgendwas grob in die Richtung "Debugger connected" (kann es gerade selbst nicht testen, ich weiß daher den konkreten Text nicht).
Wenn nein, glaube ich liegt es in der Tat an der .gdbinit, die 1. Zeile legt dort ja fest, dass Remote-Debugging betrieben wird. Ohne die dürfte gar nichts klappen, nach was es hier aussieht ;)

Edit:

Das hier

Code: Alles auswählen

sys161: Waiting for debugger connection...
sys161: New debugger connection
Also ich hab das gerade getestet: Wenn die .gdbinit nicht vorhanden ist, sieht das genau aus wie bei dir. Daher nehm ich an, die Datei heißt bei dir nicht ".gdbinit"!
Bild
338364: <Alanna> Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders
Thomas
Administrator
Beiträge: 383
Registriert: Do 23. Okt 2008, 20:16
Wohnort: Karlsruhe
Kontaktdaten:

Re: Prog Aufgabe

Beitrag von Thomas »

ja heißt sie nicht, hab mit linux noch nicht gearbeitet und angenommen das wäre ne datei-endung. dann danke auf jeden fall mal wird gleich getestet :)
Blurio
Beiträge: 56
Registriert: Do 20. Nov 2008, 21:39

Re: Prog Aufgabe

Beitrag von Blurio »

Ich weiß nich genau, wass mir

GDB is unable to find the start of the function at 0x80000000
and thus can't determine the size of that function's stack frame.

sagen soll.
Oder wie ich das fixen kann.
Johann
Beiträge: 65
Registriert: So 9. Nov 2008, 20:21

Re: Prog Aufgabe

Beitrag von Johann »

Ich hab mal gegoogelt, das scheint ein bekannter Bug bei MIPS-Anwendungen zu sein. Allerdings wurde das soweit ich das gelesen habe gefixt - hast du irgendwie eine ältere Version vom gdb?

Im Prinzip bedeutet der Fehler, dass der GDB vom Disassembly nicht rauslesen kann wo die Funktion anfängt und damit nicht in der Lage ist, die Funktion richtig zu "parsen", da der Stack-Frame zu Beginn einer Funktion aufgebaut wird. An sich ist der Stack-Frame nur ein Speicherbereich auf dem Stack, in dem Funktionen ihre lokalen Variablen ablegen!
Bild
338364: <Alanna> Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders
Antworten

Zurück zu „Übung“