"Es hat gestern funktioniert, ich schwöre!" Was können Sie tun? [geschlossen]

59

Wenn Sie am Morgen ankommen, stellen Sie fest, dass Ihre Software nicht mehr funktioniert, obwohl Sie gestern Abend abgereist sind.

Wie geht's? Was überprüfst du zuerst? Was tun Sie, um nicht mehr wütend zu sein und an Ihrem Problem zu arbeiten? Geben Sie Ihren Kollegen die Schuld und wenden Sie sich direkt an sie? Was kann getan werden, um eine solche Situation zu vermeiden?

Nikko
quelle
10
Schuldzuweisungen sind niemals eine gute Idee. Da Sie die Frage oder das Problem nicht ausgearbeitet haben, ist es unmöglich zu erraten, dass das Programm den Fehler nicht selbst erzeugt hat. Zum Beispiel: Wenn eine Website auf einem Hosting-Server das Bandbreitenlimit erreicht, geht sie von selbst aus. Daher können Sie niemandem die Schuld geben, bis Sie sicher sind, dass sich der Code überhaupt nicht angemessen verhalten hat.
Pankaj Upadhyay
1
Nun, das ist kein Stapelüberlauf, also ist es eher eine allgemeine Frage. Die Schuld Teil ist ein bisschen ein Witz :)
Nikko
28
@ Nikko - es hat gestern auch nicht funktioniert. Das passiert oft in der Softwareentwicklung :)
Joris Timmermans
4
Um nicht in der Lage zu sein, sollten Sie keine Eiltests durchführen, damit Sie die Bereitstellung in den letzten Minuten des Nachmittags durchführen können. Und nehmen Sie beim Testen Ihre rosarote / gefährliche Sonnenbrille ab.
Steve314
18
Hat das etwas mit DateTime.Now () zu tun ???
Sarawut Positwinyu

Antworten:

96

Die üblichen Verdächtigen sind:

  • Sie dachten, es hat gestern funktioniert, aber nach einem langen Arbeitstag waren Sie zu blind, um zu bemerken, dass es nicht funktioniert hat.

  • Heute morgen können Sie nicht mehr darauf verweisen, was gestern im IDE-Cache-Speicher war.

  • Die Workstation wurde letzte Nacht neu gestartet oder nach einem nächtlichen Wartungsvorgang wurden die Verzeichnisse / tmp gelöscht.

  • In der Codebasis hat sich etwas geändert: Überprüfen Sie, ob jemand (möglicherweise Sie selbst) Änderungen zwischen Ihrer letzten Kompilierung von gestern und Ihrer letzten Kompilierung von heute vorgenommen hat.

  • In den Support-Bibliotheken hat sich etwas geändert: Überprüfen Sie, ob diese Bibliotheken neu kompiliert oder aktualisiert wurden. Die Ursache kann innerhalb des Projekts für bestimmte Bibliotheken oder außerhalb liegen, wenn eine neue Version eines anscheinend unabhängigen Pakets bereitgestellt wurde.

  • In der Testumgebung hat sich etwas geändert: Neue Version einer virtuellen Maschine, ein geänderter Stub, Änderungen an einem entfernten Datenbankserver ...

  • In der Kompilierungskette hat sich etwas geändert: Änderungen in Makefiles, neuer Version von IDE, Compiler, Standardbibliotheken ...

mouviciel
quelle
82
Sie haben die "göttliche Intervention" vergessen und "ein energiereiches Teilchen ging durch den Server und ordnete zufällig Teile neu". Und Sonneneruptionen.
Kheldar
17
Sie haben vergessen, "dass Sie <hier Ihre am wenigsten bevorzugte Sprache einfügen> verwenden, was bekanntermaßen unzuverlässig ist.
Konfigurator
4
@Kheldar - Vergessen Sie nicht, böswillige Sprites, Gremlins et al.
5arx
5
@configurator: deshalb solltest du immer deine eigene sprache schreiben. Fragen Sie Spolsky nach Wasabi! prüft, ob Atwood in der
Nähe
13
Ein weiterer Klassiker ist der Datumswechsel. Dies gilt natürlich insbesondere für "Limit" -Daten (erster oder letzter Tag des Monats / der Woche, 29. Februar usw.).
Brann
49

1) Wenn es heute nicht funktioniert, hat es gestern auch nicht funktioniert.

Sie dachten, es würde funktionieren, aber es war nicht so.

2) Es gibt ein Problem, das gelöst werden muss .

Denken Sie nicht darüber nach, wer dafür verantwortlich ist oder andere beschuldigt.

Wenn sich zwischen gestern und heute nichts geändert hat (wie ich vermute, dass Sie Ihre Frage gelesen haben), sollten Sie Ihren Code besser testen, bevor Sie feststellen, dass er funktioniert.

Um diese Situation zu vermeiden, müssen Sie ordnungsgemäß testen und debuggen .

Definieren Sie "Arbeiten" und testen Sie die Grenzen Ihrer Code-Routinen.

  • Versuchen Sie, einer der Benutzer zu werden, die Ihre Programm- oder Codefunktionen verwenden.
  • Schieben Sie Ihren Code an die erlaubten Grenzen und darüber hinaus und prüfen Sie, ob er tatsächlich kaputt geht.

Eine Möglichkeit besteht darin, während der Nacht eine Reihe automatisierter umfangreicher Tests durchzuführen, damit Sie am nächsten Tag überprüfen können, ob etwas schief gelaufen ist, und die Probleme beheben können.

Jose Faeti
quelle
7
Ich möchte Ihnen zwei positive Stimmen geben - eine für "Wenn es heute nicht funktioniert, hat es gestern auch nicht funktioniert." und eine für "Es gibt ein Problem, und es muss gelöst werden". Beides sind Schlüsselideen, die zu viele Menschen vergessen.
MattBelanger
2
"Wenn es heute nicht funktioniert, hat es gestern auch nicht funktioniert." -> Das ist mir gestern passiert, als ich Front-End-Codierungen gemacht habe, die auf einem Cookie beruhten. Hat super funktioniert, als der Cookie schon gesetzt war. Ich habe herausgefunden, dass es am nächsten Tag nicht mehr richtig erstellt wurde, nachdem es abgelaufen war und versucht hat, neu erstellt zu werden.
Graham
@Graham: siehe "Wenn sich zwischen gestern und heute [...] nichts geändert hat, sollten Sie Ihren Code besser testen, bevor Sie angeben, dass er funktioniert." Sie müssen besser in der Lage sein, Ihren Code zu testen, darüber nachzudenken, was passieren soll und was passieren KANN. Vielleicht wäre es mit einem besseren Verständnis des Problems nicht passiert.
Jose Faeti
Zu 1): Vielleicht war der Wechsel in einer Hilfsbibliothek
phresnel 31.08.11
Nicht ganz richtig ...: PI hat versehentlich eine Anwendung beschädigt, indem einige Cache-Dateien in meine Anwendung gezogen wurden, bei denen es sich um Objekte handelte, die vollständig falsch serialisiert wurden. Die App war in Ordnung und es funktionierte einwandfrei. Es war nur so, als ich einen Git-Pull durchführte, da die Cache-Dateien ignoriert wurden, das Programm aktualisiert wurde und die Objekte in einem anderen Format benötigt wurden. Du bekommst trotzdem die Gegenstimme;)
Laykes
26

Der Versuch, jemanden zu finden, der die Schuld trägt, ist nicht konstruktiv und löst keine Probleme. Tu es nicht.

Wenn gestern etwas funktioniert hat und jetzt nicht, dann haben Sie entweder nicht deterministisches Verhalten (wie eine Rassenbedingung) und gestern war es nur ein Glücksfall, oder zwischen damals und heute hat sich etwas geändert, und Sie müssen herausfinden, was es ist ist.

Wie genau Sie herausfinden, was der Fall ist und wie es behoben werden kann, hängt von den Besonderheiten der Situation ab. Es ist jedoch immer hilfreich, die Ursachen methodisch zu beseitigen, dh nicht 5 Dinge auf einmal zu ändern und nicht weiter zu suchen, wenn dies hilft. Finden Sie heraus, was genau das Problem verursacht hat, und notieren Sie sich, wie das Problem behoben werden kann, damit Sie es nachschlagen können, wenn es in 3 Wochen erneut auftritt.

Die Verwendung der entsprechenden Diagnosetools (Debugger, Profiler, Netzwerkanalysetools) kann ebenfalls einen großen Unterschied bewirken.

Michael Borgwardt
quelle
Es kann auch hilfreich sein, während der Analyse des Problems schriftliche Notizen zu machen.
Starblue
25

Ich habe mit Code gearbeitet, der sich über Nacht zu ändern schien, und nach einer Weile kam ich zu dem Schluss, dass böswillige Elfen nachts in meine Codebasis krabbelten und die Dinge so änderten, dass es trotz der Tatsache, dass es gestern funktionierte, jetzt funktionierte funktioniert überhaupt nicht Tatsächlich funktioniert es im klassischen Schroedinbug- Stil nicht nur jetzt, es ist auch klar, dass es keine Möglichkeit gibt, die es jemals geben könnte.

Im Laufe der Zeit habe ich gemerkt, dass es durchaus möglich ist, dass Pixies eigentlich nichts damit zu tun haben und dass meine "Zeit nach Hause zu gehen, die gut genug ist" letzte Version möglicherweise nicht die ausführlichen Tests und Aufmerksamkeit erhält, die sie vielleicht verdient .

Meine erste Annahme, wenn ich morgens darauf stoße, ist, dass es wahrscheinlich meine Schuld ist, da ich normalerweise für meine eigenen Funktionen oder Ecken der Software verantwortlich bin, an denen ich arbeite. Meine zweite Annahme ist, dass ich den Kaffee jetzt genauso gut bekommen könnte. Wenn es nicht offensichtlich ist, dass ein Affe etwas herausfinden könnte (was es manchmal ist), dann stehen die Chancen gut, dass ich es geschafft habe, eine alte Version einer Bibliothek hineinzuziehen und versehentlich eine Datei zurückzurollen, die nicht gerollt werden musste zurück oder irgendwo etwas zwischengespeichert haben, das es in den Build gebracht hat, ohne es zu überprüfen. Wenn Sie meine letzten Versionsverwaltungsaktivitäten durchgehen, werden in der Regel die von mir ausgeführten Aktionen angezeigt. Durch das Bereinigen des Builds werden häufig fehlerhafte zwischengespeicherte Versionen entfernt.

Manchmal hat das wirklich nichts mit mir zu tun - jemand hat eine Abhängigkeit aktualisiert, ohne es zu erwähnen, und WindowsUpdate hat etwas installiert, das die Umgebung verändert hat, sodass mein Code nicht funktioniert hat. Es gibt viele Hintergrundmöglichkeiten, aber normalerweise muss man sich bemannen und akzeptieren, dass ich, wie die meisten Menschen, im Grunde genommen ein Idiot bin.

Glenatron
quelle
1
Dies ist eine sehr bescheidene und selbstironische Antwort, die viele von uns annehmen sollten. :) Normalerweise schreibe ich solche Situationen auf "Hey Moe, Hey Larry, ich habe versucht zu denken und nichts passierte!" am Ende des Tages. Ich benutze auch die Methode "Es funktioniert! Schnell einchecken und nach Hause gehen, bevor Sie den Drang haben, es zu verbessern", um diese Situationen am Ende des Tages zu vermeiden.
Jennifer S
3
An einem Ort, an dem ich arbeitete, funktionierte morgens als erstes niemandes Code. Es stellte sich heraus, dass Skype beim Booten unserer Computer den Port abrief, den die Anwendung beim ersten Start verwenden wollte.
Thepeer
Vielleicht ist der Pixie nichts anderes als eine nicht initialisierte Variable? Manchmal funktioniert die Debug-Version, wenn die Release-Version fehlschlägt (abstürzt oder sich anders verhält).
Jared Updike
20

Verwenden Sie die Versionskontrolle. Machen Sie einen Vergleich oder verwenden Sie die Schuldfunktionen Ihres VCS:

  • diff: Jedes VCS. Zeigt Ihnen die Unterschiede zwischen verschiedenen Versionen
  • blame: zum Beispiel git. Zeigt Ihnen zeilenweise an, wer was geändert hat

Wenn es keine Versionskontrolle gibt, außer dass Sie selbst oder der Chef schuld sind, können Sie sich die Änderungsdaten der Dateien und möglicherweise die Protokollierungsfunktionen Ihres Betriebssystems ansehen.

Abgesehen davon: Kompilieren Sie alles neu, und stellen Sie sicher, dass Sie auch die Hilfsbibliotheken neu kompilieren.

Natürlich: Wenn Sie die Fehlerquelle gefunden haben, bleiben Sie ruhig, fragen Sie, warum eine Änderung vorgenommen wurde, erklären Sie Ihr Problem und schlagen Sie eine Lösung vor, die Sie beide glücklich macht. Schreie sie / ihn nicht an, das wäre ein Gift für deine Produktivität.

Wenn es überhaupt keine Änderungen gibt, ist es Zeit zu sehen, was sich auf dem System geändert hat. In letzter Zeit haben Mac OS-Computer beispielsweise auf eine neue Version von Apache aktualisiert, wodurch einige Konfigurationen ungültig wurden.

phresnel
quelle
1
Diff Ftw. das ist was ich immer mache.
Aditya P
2
@AdityaGameProgrammer: Ich benutze es mehrmals am Tag, um zu sehen, woran ich gestern oder vor einer Pause gearbeitet habe :)
phresnel
Keine Versionskontrolle ?! Das ist wirklich eine schreckliche Aussicht.
Thepeer
+1 für das Erzählen von git blame... hatte keine Ahnung, dass es existiert, aber es ist FCKING AWESOME
Radu Murzea
11

Nun, hier ist ein Beispiel aus dem wirklichen Leben für Code, der "gestern" und nicht heute "funktioniert" hat ... Es ist von Anfang dieses Monats.

Die betreffende Anwendung ruft Informationen aus einer Datenbank nach Datum ab. Standardmäßig werden Daten für den aktuellen Tag abgerufen. Dies hat am 8. August gut funktioniert, ist aber am 9. August gescheitert. Es wurde nicht früher getestet. Es hätte auch am 9. September und am 10. Oktober geklappt ...

Ein weiterer Hinweis ist, dass wir in Großbritannien sind, die fragliche Datenbank war in den USA ...

Meine Antwort auf Ihre Frage, was Sie zuerst überprüfen sollten, ist, zu überprüfen, wie Sie Ihre Daten formatieren. Wenn Sie die Felder Tag und Monat vertauschen, funktioniert dies perfekt, aber nur an einem Tag pro Monat :-)

Steve
quelle
5

Beheben Sie den Fehler (wie auch immer Sie es normalerweise tun). Wenn Sie dann herausfinden, wer es verursacht hat, senden Sie ihnen eine höfliche E-Mail, in der sie wissen, was schief gelaufen ist.

Jeder Kodierer macht Fehler und wenn Sie anfangen zu tadeln, wird es ernsthaft nach hinten losgehen, wenn Sie das nächste Mal das Gleiche tun. (möglicherweise gehörte sogar dieser Bug dir)

Es ist nur dann, wenn Sie den Verdacht haben, dass sie regelmäßig nachlässig sind, wenn Sie ein paar Bugs zu einer großen Sache machen.

Tom Squires
quelle
5

... Sie führen Regressionstests durch und konzentrieren sich auf diejenigen, die versagen.

Eigentlich ist es das, was du gestern vergessen hast, bevor du gegangen bist, es passiert.

Hast du keine? Ok .. was sagst du da? Beschuldigung ? Nun ... das könnte dann funktionieren

ZJR
quelle
5

Das erste, was Sie tun müssen, wenn etwas nicht mehr funktioniert, ist sich zu fragen: Was ist anders? Was hat sich verändert?

Als gestern Abend etwas funktionierte, aber heute Morgen versagte, hat sich offensichtlich Folgendes geändert: Datum und Uhrzeit :)

Ich würde versuchen zu überlegen, ob ein Teil der Logik, an der ich arbeite, von den Daten abhängt und möglicherweise vom Ablauf der Zeit beeinflusst wird. Es ist überraschend, wie oft dies die Ursache für solche Probleme ist.

Wenn dies fehlschlägt, sollten Sie auf jeden Fall die anderen guten Ratschläge befolgen, die hier gegeben werden.

U / min
quelle
2
Fehler, die zeitliche Besonderheiten mit sich bringen, wie das Ein- und Ausschalten der Sommerzeit, sind die Favoriten (im Oktober und März) ...
Julia Hayward
4

Sie sehen in Ihrem Postfach nach der E-Mail, die von der Continuous Integration Engine gesendet wurde, als die Komponententests fehlgeschlagen sind (oder nach der Protokollseite, wenn Sie dieses spezielle Problem nicht beobachtet haben), und sehen, wer den Check-in unmittelbar vor diesem Build durchgeführt hat .

Dann rede mit ihm oder ihr.

user1249
quelle
4

Es gibt nur zwei mögliche Gründe, warum Ihr Code heute fehlschlägt, aber gestern funktioniert hat.

Schauen Sie sich die Daten an

In den Daten ist etwas, das Sie nicht getestet haben und / oder nicht berücksichtigt haben. Entweder werden die Daten nicht richtig validiert oder ein Fehler in der Logik wurde erst dann aufgedeckt, wenn ein von Ihnen nicht erwarteter logischer Zustand eintritt. Dies bedeutet, dass der Bug gestern dort war, aber unter gültigen Daten vor Ihnen verborgen war.

Ich hatte einmal einen Bestellcode, der wochenlang in Ordnung war. Eines Tages ging ich nach Hause und es starb. Eine Untersuchung am nächsten Tag ergab, dass ich einen Fehler in einer Reihe von Funktionsaufrufen versteckt hatte. In einer schwach getippten Sprache habe ich eine Ganzzahl angegeben, wenn ich eine lange Ganzzahl hätte verwenden sollen. Die Sprache hat die Konvertierung zwischen den beiden automatisch durchgeführt, bis dies nicht mehr möglich war, da die Zahl die Größe einer Ganzzahl überschritt. Das System ist unter der Bestellnummer 32768 ausgefallen.

Schau dir an, was sich geändert hat

Schau dir an, was sich geändert hat, seit es funktioniert hat. Hat der IT-Bereich ein Betriebssystem-Update veröffentlicht? Hat ein anderer Programmierer den von Ihrem Programm verwendeten Code geändert? Hat sich die Berechtigung des Benutzers geändert? Wenn Sie feststellen, was sich geändert hat, finden Sie häufig den Fehler.

Andrew Neely
quelle
3

Binäres Hacken

funktioniert besonders gut bei schwierigen JavaScript-Fehlern. Im Grunde genommen kommentieren Sie den halben Code, und prüfen Sie, ob der Fehler angezeigt wird. Wieder die Hälfte und weitermachen.

Wenn Ihr Code gut gekapselt ist, ist dies ein fantastisches, zeitsparendes und stressfreies Tool.

Sobald Sie den Schuldcode gefunden haben, lohnt es sich oft, den Fehler auf einer eigenen Testseite einzugrenzen.

chim
quelle
natürlich , wenn Ihr Projekt erstreckt sich über mehrere Dateien kann dies durch * hust verlängert werden zufällig Husten * Löschen Hälfte Ihrer Projektdateien, die auf jeden Fall eine effektive Stress Zerschlagung Werkzeug (stellen Sie sicher , Sie haben eine Sicherung obwohl bekam).
Lie Ryan
Ja, stellen Sie auf jeden Fall sicher, dass Sie ein Backup haben!
chim
3

Und was kann man natürlich tun, um nicht in eine solche Situation zu geraten?

Wenn Sie diese Frage beantworten, sollten Sie sich mit Continuous Integration (CI) befassen . Einfach ausgedrückt: CI ist ein Prozess, bei dem Entwickler häufig (mehrmals am Tag) den gesamten Code integrieren und testen. Die Idee ist, dass Änderungen an einem Modul, die ein anderes Modul beschädigen, schnell gefunden werden.

In der Praxis verwenden die meisten Teams, die CI einsetzen, einen CI-Server (siehe: Wikipedia-Liste ). Der CI-Server ist normalerweise so eingerichtet, dass er das SCM-Repository überwacht und einen Build startet, wenn Änderungen festgestellt werden. Nach Abschluss des Builds werden eine Reihe automatisierter Tests ausgeführt und die Ergebnisse per E-Mail und / oder auf der Webseite des Builds und der Tests zusammen mit den Änderungen, die den Build verursacht haben, veröffentlicht. Hoffentlich müssen Sie sich nur eine sehr kleine Änderung ansehen, wenn etwas den Build oder die Tests unterbricht, damit es schneller gelöst wird.

Es gibt hier weitere Fragen zu dem zu verwendenden CI-Server, sodass Sie diese bei Interesse finden können. Persönlich bin ich ein großer Fan von Jenkins.

[Was soll ich tun, wenn etwas kaputt geht?]

Wie andere bereits gesagt haben, finden Sie heraus, was kaputt ist, und versuchen Sie, es zu beheben. Wenn Sie versuchen, die Schuld zu suchen, verbringen Sie Zeit damit, das Problem nicht zu lösen.

jwernerny
quelle
Ja, bei der Arbeit verwenden wir Jenkins und es ist wirklich nützlich. Wir können Builds auf verschiedenen Systemen überwachen und sofort erkennen, was fehlschlägt. Wir haben sogar ein echtes Garagenfeuer, das zu blinken beginnt, wenn ein Build fehlschlägt.
Nikko
3

Meine natürliche Reaktion ist immer, andere zu beschuldigen, aber im Laufe der Zeit wurde mir klar, dass normalerweise ich selbst schuld bin . Neben all den hervorragenden Kommentaren ist es wichtig, dass Sie selbst aufzeichnen, was der letzte Grund war. Es ist egal, ob Sie ein Wiki verwenden, das mit anderen Teammitgliedern geteilt wird, ein privates Twiki, Evernote, ein Logbuch oder ein gutes Gedächtnis. Das Wichtigste ist, im Moment, in dem Sie die Antwort finden (und wieder arbeiten wollen!), Den Grund aufzuzeichnen.

Ameise
quelle
2

Wenn es nicht mehr funktioniert, haben Sie möglicherweise die Symptome für das Nicht-Funktionieren festgestellt, dh es hängt oder gibt dem Benutzer einen bestimmten Fehlerdialog zurück.

Wenn die einzige Beschreibung des Problems "Es funktioniert nicht" lautet, müssen Sie zunächst weitere Informationen zu den Symptomen des Problems sammeln.

Dann fangen Sie an, nach möglichen Ursachen zu suchen, entweder über Protokolle oder einen erneuten Versuch, das Problem zu beheben, oder über eine Kombination aus beidem - je nachdem, wie Ihr System eingerichtet ist.

Dann fängst du an, sie auszuschließen.

Versuchung
quelle
2

Das passiert normalerweise, wenn ich Urlaub mache :-)

Im Ernst, ich würde ihnen zuerst sagen:

  • Ich werde nachsehen , was los ist und was die Wurzel sein könnte

  • Ich werde mich in 30-60 Minuten bei base melden, sobald ich die Gelegenheit hatte zu sehen, was passiert

Nach dieser Zeit kann ich eine Schätzung darüber abgeben, was möglicherweise passiert ist und wie lange es dauern wird, bis das Problem behoben ist, sofern es noch nicht behoben ist, und gegebenenfalls, welche Daten wir möglicherweise verloren haben (aber ich habe gute Backups, sodass dies niemals passiert hoffnungsvoll).


Was den beschuldigenden Teil betrifft:

  • Wenn es sich nur um einen Tippfehler eines Kollegen handelt, muss man das nicht erwähnen: Scheiße passiert und der Schreck durch den Fehler hat ihm höchstwahrscheinlich eine Lektion erteilt, und hoffentlich wird er es nicht noch einmal tun.

  • wenn er absichtlich etwas getan hat, das ich ihm nicht gesagt habe (z. B. dem neuen Benutzer das root-Passwort des Produktionsservers geben und ihn anweisen, direkt ohne Aufsicht Änderungen daran vorzunehmen) (ja, das ist schon passiert ...), dann habe ich muss es erwähnen.

Wildpeaks
quelle
2

Wenn Ihre üblichen Methoden zur Fehlersuche nicht funktionieren und alles total durcheinander ist, kann es wunderbar sein, ein Backup zu haben, das Sie einfach wiederherstellen können.

Dies ist, was ich vor Ort laufe, automatisch jede Stunde von 8 bis 18 Uhr:

rdiff-backup /path/to/mystuff /path/to/mybackup

Einfach, wie?

Wenn Sie jemals etwas wiederherstellen müssen, verwenden Sie

rdiff-backup -r 24h /path/to/mybackup/specific/dir /tmp/restored

rdiff-backup speichert nur Dateien, die sich unterscheiden. Sie können rdiff-backup unter Linux, Mac und Win verwenden.

Dies sollte natürlich nicht Ihre einzige Sicherung sein. Aber es ist extrem einfach und billig, ein lokales Backup zu haben.

Nun, ich würde dies nicht als normale Fehlerbehebungsmethode empfehlen, aber wenn alles andere fehlschlägt, ist es ein Fallback.

olafure
quelle
3
Versionskontrolle ist einfacher
thepeer
@thepeer: absolut einverstanden. Es gibt jedoch Dinge, die sich der Quellcodeverwaltung widersetzen (insbesondere beim Micro-Commit-Zeitplan), z. B. große Binärdateien. Ich bin nur froh, dass ich solche Projekte die meiste Zeit
siehe 31.08.11
@thepeer: Ich hätte nicht gedacht, dass jemand dies als Alternative zur Versionskontrolle in Betracht ziehen würde. Das wäre meine Vorstellung von einem organisierten Chaos :) Auf diese Weise hast du eine Kopie deiner Sachen wie gestern. Egal wer was und wann an das Versionskontrollsystem übergeben hat. Ihr letzter Commit war möglicherweise auch länger als 2 Tage her. Bei einigen Projekten werden bestimmte Dateien von der Versionskontrolle ignoriert.
olafure
@sehe: mit git, das ich gerade benutze, hast du dein eigenes persönliches repo, also gibt es keine entschuldigung, nicht bei jedem schritt des weges festzuschreiben.
Thepeer
@olafure: Jedes anständige Versionskontrollsystem sollte es Ihnen ermöglichen, den vollständigen Status des Systems zu jedem beliebigen Zeitpunkt zu überprüfen / zu klonen.
Thepeer
2

Der Fehler ist möglicherweise bereits vorhanden, wurde jedoch durch externe Faktoren oder tiefgreifende Systemprobleme ausgeblendet.

Das ist mir passiert. Ein Fehler ist zwischen 2 Builds unseres Projekts aufgetreten. Buchstäblich war die einzige Änderung, die wir vorgenommen hatten, die Aktualisierung auf einen neueren Build der zugrunde liegenden Bibliotheken.

Natürlich haben wir ihnen die Schuld gegeben. Die einzige Änderung, die sie vorgenommen hatten, bestand darin, einige Header für eine schnellere Kompilierung zu überarbeiten. Ich stimmte zu, dass dies das System nicht hätte beschädigen dürfen.

Nach langem Debuggen stellte sich heraus, dass das Problem ein Rogue Pointer Bug war, der seit Jahren in meinem Code verborgen war . Irgendwie wurde es erst ausgelöst, als das Refactoring die Anordnung der ausführbaren Datei geändert hatte.

Matthew Scouten
quelle
1

es hat gestern funktioniert, da es richtig benutzt wurde.

Sie stellen fest, dass andere Leute Dinge auf eine Art und Weise benutzen, von der man nicht annimmt, dass es eine gute Art ist, Dinge zu zerbrechen.

Es ist immer gut, den Code früh am Tag zu aktualisieren, da Sie so eine gute Testumgebung haben.

Backup!

Robert
quelle
-2

Ich finde es sehr hilfreich, Haltepunkte zu setzen, um meine Daten anzuhalten und zu überprüfen, um genau zu bestimmen, wo und wie es schlecht läuft.

DKC
quelle