Darkstar999
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Hallo ich habe da ein Problem! Ich suche eine IDE für Linux für die Sprache C wo ich die Möglichkeit hebe in dynamisch Strukturen(Arrays) beim Debuggen reinzuschauen.
Das ist ziemlich wichtig da ich in Grundlagen der Informatik und Programmierung jetzt bei dynamischen Strukturen(Arrays) angekommen bin.
Weder Eclipse noch Netbeans erfüllen dieses Kriterium, sie zeigen immer nur das erste Element an bzw. die erste Struktur an.
Kennt da jemand eventuell eine Ide mit der es geht ? Mit freundlichem Gruß,
darkstar999
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
Hi. Ich denke mal nicht, dass es sowas gibt. Schließlich kann man ja (als Debugger) nicht wissen, wie groß ein Array ist.
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Naja laut meinem Prof soll Visual Studio das unter .... problemlos können! Mfg
darkstar999
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Darkstar999 schrieb: Naja laut meinem Prof soll Visual Studio das unter .... problemlos können!
Das geht schon, wenn der Debugger Verständnis für den Code entwickelt hat. Irgend wo muss man ja entweder eine statische Größe angegeben haben (foo[SIZE] ) oder per malloc Speicher allozieren. Ob das die IDE wirklich kann, weiß ich natürlich nicht. Rein aus dem Zeiger alleine kann man das nicht herausfinden!
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Lysander schrieb: Darkstar999 schrieb: Naja laut meinem Prof soll Visual Studio das unter .... problemlos können!
Das geht schon, wenn der Debugger Verständnis für den Code entwickelt hat. Irgend wo muss man ja entweder eine statische Größe angegeben haben (foo[SIZE] ) oder per malloc Speicher allozieren. Ob das die IDE wirklich kann, weiß ich natürlich nicht. Rein aus dem Zeiger alleine kann man das nicht herausfinden!
Stimmt halbwegs
sorgt ja dafür das je nach Funktion und Größe der Speicher vergrößert wird. somit hat man ja nur einen Zeitlichen Fixpunkt!
|
Panke
Anmeldungsdatum: 14. Oktober 2010
Beiträge: 133
|
Andererseits kann man als Debugger ja auch einfach anbieten, die nächsten x Elemente auch anzuzeigen. Der Benutzer hat dann halt x anzugeben.
Nutzt man C++, so muss der Compiler aber auch irgendwo die Größe aller Arrays ablegen für den Operator delete[].
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Panke schrieb: Andererseits kann man als Debugger ja auch einfach anbieten, die nächsten x Elemente auch anzuzeigen. Der Benutzer hat dann halt x anzugeben.
Nutzt man C++, so muss der Compiler aber auch irgendwo die Größe aller Arrays ablegen für den Operator delete[].
Das mit dem x ist nen guter Wink.
Bei Netbeans ist es möglich <Enter new Watch> da dann u[x] für u an der x.ten Stelle.
Allerdings müsste er das doch registrieren wen das Array von Strukturen gefüllt wird und dieses dann in einem gesamten angeben. Mfg
darkstar999
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Darkstar999 schrieb: Allerdings müsste er das doch registrieren wen das Array von Strukturen gefüllt wird und dieses dann in einem gesamten angeben.
Vorschlag: Versuche mal ein Tool zu bauen, welches genau das kann 😉 Du wirst schnell feststellen, dass das sicherlich nicht trivial ist.
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Lysander schrieb: Darkstar999 schrieb: Allerdings müsste er das doch registrieren wen das Array von Strukturen gefüllt wird und dieses dann in einem gesamten angeben.
Vorschlag: Versuche mal ein Tool zu bauen, welches genau das kann 😉 Du wirst schnell feststellen, dass das sicherlich nicht trivial ist.
Hehe das ist mir auch klar! es ging ja darum ob es so-was schon gibt ! Mfg
Darkstar999
|
Streamstormer
Anmeldungsdatum: 1. Februar 2010
Beiträge: 441
|
Hallo Darkstar999, CodeBlocks kann das, was du willst, solang du ihm während des debuggen genau angibst, wie groß das Array gerade ist. Bei anderen Strukturen hat er aber noch seine Schwirigkeiten besonders bei pointer auf pointer einer Struktur lässt GDB sich leicht verwirren, aber für dich sollte es ausreichen. Sieh die Screenshots. Du musst GDB sagen das es sich um ein Array handelt den Startpunkt und wie viele Objekte sich gerade im Array befinden. Dabei ist es egal ob es ein dynamisches Array oder ein Statisches Array ist,solang du die Größe weißt! Gruß Streamstormer
- Bilder
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17604
Wohnort: Berlin
|
Mit Eclipse schaue ich, allerdings beim Javaprogrammieren, schon seit Urzeiten in Arrays hinein. Vielleicht musst Du die im Debugfenster einfach auffalten. Ich weiß nicht ob das ähnlich gestaltet ist, für C.
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
user unknown schrieb: Mit Eclipse schaue ich, allerdings beim Javaprogrammieren, schon seit Urzeiten in Arrays hinein. Vielleicht musst Du die im Debugfenster einfach auffalten. Ich weiß nicht ob das ähnlich gestaltet ist, für C.
Bitte richtig lesen Dynamische Array und Strukturen keine statischen Arrays !
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Streamstormer schrieb: Hallo Darkstar999, CodeBlocks kann das, was du willst, solang du ihm während des debuggen genau angibst, wie groß das Array gerade ist. Bei anderen Strukturen hat er aber noch seine Schwirigkeiten besonders bei pointer auf pointer einer Struktur lässt GDB sich leicht verwirren, aber für dich sollte es ausreichen. Sieh die Screenshots. Du musst GDB sagen das es sich um ein Array handelt den Startpunkt und wie viele Objekte sich gerade im Array befinden. Dabei ist es egal ob es ein dynamisches Array oder ein Statisches Array ist,solang du die Größe weißt! Gruß Streamstormer
ja funzt das Problem ist nur das ich das Array mit realloc wenn nötig vergrößre dann muss ich das ja immer umstellen oder ?
|
Streamstormer
Anmeldungsdatum: 1. Februar 2010
Beiträge: 441
|
Darkstar999 schrieb: ja funzt das Problem ist nur das ich das Array mit realloc wenn nötig vergrößre dann muss ich das ja immer umstellen oder ?
Theoretisch schon aber warum solltest du nach jedem Realloc das überprüfen. Es reicht doch wenn du das Array am Ende deines Einlese Prozesses oder bevor du es weiter bearbeitest überprüfst. Wenn du das unbedingt trotzdem machen willst und ständig reinschauen willst kannst du ja gdb angeben das das array rießig groß ist z.B 1000. Dann sollte dann sowas stehen wie:
pointer =[1,2,3,4,5,12236,0 <repeats 994 times>]
len= 4;
An den Stellen wo noch nichts drin ist steht entweder Speichermüll oder eine 0. Gruß Streamstormer
|
Darkstar999
(Themenstarter)
Anmeldungsdatum: 21. September 2008
Beiträge: 324
|
Streamstormer schrieb: Darkstar999 schrieb: ja funzt das Problem ist nur das ich das Array mit realloc wenn nötig vergrößre dann muss ich das ja immer umstellen oder ?
Theoretisch schon aber warum solltest du nach jedem Realloc das überprüfen. Es reicht doch wenn du das Array am Ende deines Einlese Prozesses oder bevor du es weiter bearbeitest überprüfst. Wenn du das unbedingt trotzdem machen willst und ständig reinschauen willst kannst du ja gdb angeben das das array rießig groß ist z.B 1000. Dann sollte dann sowas stehen wie:
pointer =[1,2,3,4,5,12236,0 <repeats 994 times>]
len= 4;
An den Stellen wo noch nichts drin ist steht entweder Speichermüll oder eine 0. Gruß Streamstormer
Jep danke das geht !
|