Debuggen von Go-Programmen mit GoClipse: Assembler-Code vs. Go-Code
Beim Debuggen von Go-Programmen mit GoClipse kann es vorkommen, dass die Der Debugger durchläuft Assembler-Code anstelle von Go-Code, auch nach dem Festlegen von Haltepunkten. Dies wird im Allgemeinen durch eine ungeeignete Einstellung in den Startkonfigurationsoptionen verursacht.
Grundlegendes zur Debug-Ansicht
Wenn Ihr Go-Programm während des Debuggens stoppt, wird die Debug-Ansicht in Eclipse angezeigt ein Stacktrace. Wenn es wie folgt aussieht:
<code class="text">Thread [1] 0 (Suspended : Breakpoint) main() at rt0_windows_amd64.s:15 0x42a400 KERNEL32!BaseThreadInitThunk() at 0x773259ed 0x0 </code>
Dies zeigt an, dass das Programm beim Start automatisch bei der „Haupt“-Funktion angehalten hat. Dies ist jedoch nicht die „Haupt“-Funktion von Go, sondern eine in C geschriebene interne Laufzeit-„Haupt“-Funktion.
Problem lösen
Um dieses Problem zu beheben, Überprüfen Sie die Startkonfigurationsoptionen und finden Sie die erste Option. Es kann „Default main() (runtime/rt0_*)“ oder „main.main() (Quellcode-Einstiegspunkt)“ oder etwas Ähnliches lauten.
Wenn es auf „Default main() (runtime /rt0_*)“, ändern Sie es in „main.main() (Quellcode-Einstiegspunkt)“. Alternativ können Sie die Option einfach deaktivieren.
Sobald Sie die erforderlichen Änderungen vorgenommen haben, klicken Sie auf „Ausführen/Fortsetzen“ (F8), um mit dem Debuggen fortzufahren. Der Debugger durchläuft jetzt Ihren Go-Code und nicht den Assembler-Code.
Das obige ist der detaillierte Inhalt vonWie debugge ich Go-Programme mit GoClipse: Assembler-Code vs. Go-Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!