Anhang D: Anmerkungen zur Portierung auf andere Systeme 695
Wenn Sie einen Speicher¨uberlauffehler vermuten, k¨onnen Sie MySQL mit --
with-debug=full kompilieren, was zus¨atzlich einen (SAFEMALLOC)-Pr¨ufer f¨ur die
Speicherzuweisung installiert. Das Laufenlassen mit SAFEMALLOC ist jedoch recht
langsam. Wenn Sie daher Performance-Probleme bekommen, sollten Sie mysqld mit der
--skip-safemalloc-Option starten. Das schaltet die Speicher¨uberlaufpr¨ufung f¨ur jeden
Aufruf von malloc und free ab.
Wenn mysqld nicht mehr abst¨urzt, wenn Sie ihn mit --with-debug kompilieren, haben
Sie wahrscheinlich einen Compiler-Bug oder einen Timing-Bug innerhalb von MySQL ge-
funden. In diesem Fall k¨onnen Sie versuchen, -g f¨ur die CFLAGS- und CXXFLAGS-Variablen
oben hinzuzuf¨ugen und nicht mehr --with-debug zu benutzen. Wenn mysqld jetzt stirbt,
k¨onnen Sie wenigstens mit gdb mit ihm verbinden oder gdb auf die Core-Datei benutzen,
um herauszufinden, was passiert ist.
Wenn Sie MySQL zum Debuggen konfigurieren, k¨onnen Sie viele zus¨atzliche Sicher-
heitpr¨uffunktionen hinzuf¨ugen, die die Gesundheit von mysqld beobachten. Wenn Sie etwas
“Unerwartetes” finden, wird ein Eintrag nach stderr geschrieben, den safe_mysqld in die
Fehler-Log-Datei leitet! Das heißt auch, dass Sie bei unerwarteten Problemen mit MySQL
und der Benutzung einer Quelldistribution als erstes MySQL zum Debuggen konfigurieren
zu schicken und um Hilfe zu bitten. Bitte benutzen Sie das mysqlbug-Skript f¨ur alle
Bug-Berichte oder Fragen hinsichtlich der MySQL-Version, die Sie benutzen!
In der Windows-MySQL-Distribution wird mysqld.exe vorgabem¨aßig mit Unterst¨utzung
f¨ur Trace-Dateien kompiliert.
D.1.2 Trace-Dateien erzeugen
Wenn der mysqld-Server nicht startet oder wenn Sie den mysqld-Server schnell zum Absturz
bringen k¨onnen, k¨onnen Sie versuchen, eine Trace-Datei zu erzeugen, um das Problem zu
finden.
Hierf¨ur brauchen Sie einen mysqld, der zum Debuggen kompiliert ist. Sie k¨onnen das mit
mysqld -V pr¨ufen. Wenn die Versionsnummer mit -debug endet, ist Unterst¨utzung f¨ur
Trace-Dateien einkompiliert.
Starten Sie den mysqld-Server mit einem Trace-Log in ‘/tmp/mysqld.trace’ (oder
‘C:\mysqld.trace’ unter Windows):
mysqld --debug
Unter Windows sollten Sie auch den --standalone-Flag benutzen, um mysqld nicht als
Systemdienst zu starten.
Machen Sie folgendes in einem DOS-Fenster:
mysqld --debug --standalone
Danach k¨onnen Sie das mysql.exe-Kommandozeilenwerkzeug in einem zweiten
DOS-Fenster benutzen, um das Problem zu reproduzieren. Sie k¨onnen den obigen
mysqld-Server mit mysqladmin shutdown herunter fahren.
Beachten Sie, dass die Trace-Datei sehr Groß wird! Wenn Sie eine kleinere Trace-Datei
haben wollen, k¨onnen Sie etwa folgendes tun:
mysqld --debug=d,info,error,query,general,where:O,/tmp/mysqld.trace
Comentarios a estos manuales