dtruss SQL-Abfragen unter Mac OSX

304
Thomas Junk

In unserem Shop haben wir eine inhomogene Umgebung und machen Java auf verschiedenen Boxen - meistens Mac OSX, ich unter Linux und einer Windows-Box. Beim Debuggen von JPQL-Queries und ihres SQL-Ergebnisses ist es erforderlich, reines SQL zu lesen . Ich habe eine Möglichkeit in der Verwendung des _general_log_ in msql gefunden und den Server die Abfrageprotokollierung durchführen lassen. Aber ich bin ein fauler Entwickler, also habe ich über einen schnelleren Ansatz nachgedacht, um direkte Ergebnisse zu erzielen .

Auf meiner Linux-Boxstrace -p $CATALINAsPID -f -q - s 9999 - e sendto lasse ich einfach meine Abfrage laufen. sendtoist der Systemaufruf, der die reine SQL enthält .

Ich wollte das gleiche für Mac OSX machen und fand dtruss(eine Fassade für dtrace ?), Die ähnliche Sachen macht strace. Also habe ich versucht, es auf sendto(analog zu Linux) zu beschränken - aber ohne Erfolg.

Wie funktioniert dtruss bzw. wie kann ich das reine SQL verfolgen ?

0

1 Antwort auf die Frage

0
Thomas Junk

Ich habe einen beschissenen Weg gefunden, um zu bekommen, was ich will: Schreibe einfach ein dtrace-Skript wie:

syscall::sendto:entry /pid == $setPIDHere/ { tracemem((copyin(arg1, arg2)),9999); } 

Und schnapp dir das Ergebnis. Hacky, aber funktioniert