Seite 1 von 32 1234511 ... LetzteLetzte
Ergebnis 1 bis 15 von 473

Thema: Debug-Dll

  1. #1
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585

    Idee Debug-Dll

    @Kathy:

    Wenn du einen reproduzierbaren CTD hast, kannst du natürlich mit DLL-Debuggen ansetzten.

    Grundsätzlich kann ich nur empfehlen, vor jedem Release eine größere Rundenzahl im Autoplay laufen zu lassen.
    (Vorausgesetzt "Autoplay" wurde in Civ4 bzw. deiner Mod implementiert. Ist ein unfassbar nützliches Feature um Fehler mit der Debug-DLL aufzustöbern.)

    Leider funktioniert das mit Grafiken -im Gegensatz zur Logik- nur sehr schlecht.
    Sprich im Debug findet man oft - wenn überhaupt - nur die Einheit raus, bei der es kracht, aber nicht, was bei dieser Einheit im Detail schief gegangen ist.

    Außerdem ist es auch sehr unschön, wenn viel Logik im Python steckt, weil man da mit DLL-Debuggen wenig Informationen bekommt im Vergleich zur Logik in der DLL selber.

    Ansonsten zusätzlich eben Python-Exceptions anschalten und Logs prüfen.

    Mit Stacktraces konnte ich selber noch nie viel anfangen ...

    Die Maßnahmen, die ich oben beschrieben habe sollten am Besten regelmäßig durchgeführt werden und nicht erst wenn es kracht.
    Das ist auf Dauer gesehen nämlich wirklich viel weniger zeitaufwendig.
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  2. #2
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Mit Fehlerbeseitigung wegen Grafik habe ich bisher nur wenig zu Erfahrung, aber den Rest kann ich auf jeden Fall unterschreiben.

    Fehler findet man in der Debug-DLL recht schnell. Mit Pythoncode wird es schwieriger. Ich habe mit einer Base-Debug-DLL schon 100 Fehler im Python-Code von Base identifiziert, aber die Ursachen konnte ich nur selten aufspüren. Häufig wird einfach nicht auf die Gültigkeit der übergebenen Funktionsparameter geachtet.

  3. #3
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Die Python-Exceptions sind bei mir standartmäßig an, daran liegt es eher nicht. Das Problem ist auch, dass der Fehler ja eben nicht reproduzierbar, sondern willkürlich ist. Wenn man die Runde läd und danach weiterspielt, geht es auch weiter. Mit .dll-Änderungen arbeitete ich gar nicht, darum kann ich da keinen Fehler eingebaut haben - wohl aber derjenige, der die SuperSpies-.Dll gebaut hat, die ich benutze (nachdem man sie mir freundlicherweise auf 40 Civs erweitert hat).

    Bei den Logs habe ich häufig diese Fehlermeldungen:
    "building:Art/Structures/Buildings/Verlag/Villa_2.nif does not contain a node called SHADOW. Its shadow, if present, will be corrupt!"
    und
    "Failed to place goal building ART_DEF_BUILDING_EGYPT_TEMPLE."

    Sind die irgendwie relevant und kann man die Ursache bekämpfen? Wenn ja: Kann mir jemand sagen, wie?

  4. #4
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Ês gibt Fehler im Pythoncode, die nicht als Pythonfehler gemeldet werden, aber mit einer Debug-DLL auffallen. Schwierig ist nur das lokalisieren des Fehlers. Manche Pythonfehler werden auch nur im Ingamelog angezeigt.

  5. #5
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Kathy Beitrag anzeigen
    Mit .dll-Änderungen arbeitete ich gar nicht, darum kann ich da keinen Fehler eingebaut haben - wohl aber derjenige, der die SuperSpies-.Dll gebaut hat, die ich benutze (nachdem man sie mir freundlicherweise auf 40 Civs erweitert hat).
    Selbst wenn du selber keine Änderungen in der DLL gemacht hast und die besagte DLL in Ordnung ist, kannst du mit DLL-Debuggen Fehler aufspüren.

    Beispielsweise auch irgendwelche Einstellungen im XML die nicht passen.
    (z.B. ein bestimmtes Balancing einer Einheit das in Kombination mit einer bestimmten UnitAI die KI überfordert.)

    Zitat Zitat von Kathy Beitrag anzeigen
    Sind die irgendwie relevant und kann man die Ursache bekämpfen? Wenn ja: Kann mir jemand sagen, wie?
    Ich bin nur Programmierer und kein Grafikmodder.
    Meine Aufgabe war es die Fehler aufzustöbern.
    Sprich ich hab über diverse Methoden (DLL-Debuggen, Logs prüfen, ...) rausgefunden wo was nicht passt bzw. nicht zu passen scheint.

    Wenn es in der Logik (DLL, Python) oder in der Konfiguration (XML) war, dann hab ich es selber gefixt.
    Wenn es aber eine Grafik war hab ich das den Grafikmoddern des Teams gesagt und die haben sich dann drum gekümmert.
    (Bzw. manchmal haben die mir dann auch nur gesagt, dass die Meldung irrelevant ist.)

    Also nein, ich kann dir nicht sagen ob das wirklich ein ernstes Problem ist oder wie man das im Detail beseitigt.
    Sowas zu wissen war einfach nicht mehr meine Aufgabe. Sorry.

    Meine Meinung ist aber, dass man alle Fehler einfach fixen sollte, wenn es machbar ist.
    Schon alleine aus dem Grund, dass es einfacher wird die schweren Fehler zu finden und zu korrigieren, wenn die kleinen beseitigt wurden.
    Geändert von raystuttgart (06. Juli 2013 um 12:47 Uhr)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  6. #6
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Bei Pie gab es mal ein Ereignis, was eine unendliche Rekursion wegen einer Falschdefinition ausgelöst hat. Das führt zwangsweise zum Absturz. Die Ursache konnte man nur mit einer Debug-DLL finden. Pie hat keine Änderungen an der DLL.

  7. #7
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Die kommt man an eine Debug-Dll? Das ist für mich im Moment noch Neuland, aber ich will den Versuch nicht ungenutzt lassen.

    Edit: Den Textfehler von "wealth" habe ich einmal korrigiert. Das mit den Events kann ich bisher nicht bestätigen, bei mir kommen die Abstürze meist in der Runde und dann unabhängig von den Events. Aber es ist natürlich möglich, dass solche unendlichen Rekursionen auch ausgelöst werden. Um so wichtiger, dass ich das mit der Debug-DLL mal versuche.

  8. #8
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    In dem man einfach die DLL im DebugModus kompiliert. Ich sage aber gleiche, die Performanz ist erstmal allgemein schlechter, weil Überprüfungsmethoden auf korrekte Variabeln aktiv sind und weitere Debugcodeabschnitte. Sollte also nur zum Fehler finden genutzt werden.

  9. #9
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Kann ich nicht. Ich habe nie eine DLL kompiliert, keine Ahnung wie das geht. Aber ich frage mal den, der mir bei der DLL geholfen hat (Alpha Civ, meine ich), vielleicht kann er mir helfen.

  10. #10
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Es wäre günstig, wenn du selbst kompilieren könntest. Wenn du mit der Offenen Umgebung debuggst, kannst du dir direkt den Fehlerort, sowie den Stack, ansehen.

    Wie gesagt, häufig werden nicht alle Parameter des Pythoncode auf Gültigkeit überprüft. Das könnte man versuchen nachzuverfolgen.

  11. #11
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Die Debug-DLL einfach nur zu haben, wird dir nicht sonderlich viel bringen.
    Man muss diese auch im Zusammenspiel mit einer Entwicklungsumgebung richtig einsetzen.
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  12. #12
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Und wie macht man das? Hast du eine Anleitung für mich, ich kenne mich damit gar nicht aus, gibt es irgendwo einen Link, wo ich das nachlesen kann?

  13. #13
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Es gibt hier im Forum ein Tutorial, wie man eine BTS-DLL erstellt.

  14. #14
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Ich meinte vor allem auch RayStuttgarts hinweis, dass mir die .dll alleine nichts nützt, wenn ich keine Entwicklungsumgebung habe. Was ist damit gemeint, welche Umgebung brauche ich, wie werte ich das aus, für all das bräuchte ich auch eine Anleitung. Erstmal suche ich nach der Anleitung für das Erstellen der .dll, aber ich weiß, dass ich schon zweimal an solchen Anleitungen gescheitert bin. Dadurch bin ich nicht sehr zuversichtlich für einen neuen Anlauf.

  15. #15
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Genau die Entwicklungsumgebung für das Kompilieren brauchst du!

    http://www.civforum.de/showthread.ph...dll-%283-19%29

Seite 1 von 32 1234511 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •