java + dtrace kaputt?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • java + dtrace kaputt?

    Moinsen!

    Ich habe das Wochenende über mit Java und DTrace gekämpft und bin aktuell der Meinung, dass die Version, die ich aktuell nutze, kaputt ist:

    $ java -version
    java version "1.6.0_17"
    Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-10M3025)
    Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode

    Das Kommando ist eigentlich ganz einfach, aber der Output ändert sich nach dem Start von "ja so soll es sein" in "ganz großer Mist und deshalb nicht mehr nutzbar":

    [Blockierte Grafik: http://s3.amazonaws.com/ember/USQPcgV9QigxckwgFm4vGenqLKAcR6al_m.png]

    Kann jemand meine Beobachtung bestätigen? Oder mache ich hier Blödsinn?

    Viele Grüße
    Christian
  • RE: java + dtrace kaputt?

    Also viel kann man an dem Skript nicht falsch machen, oder?

    Quellcode

    1. sudo dtrace -qn 'hotspot*:::method-entry { printf("%s.%s\n",stringof(copyin(arg1, arg2)), stringof(copyin(arg3, arg4))); }'
    Mein Ursprungsskript war etwas größer, aber für die Fehlersuche ist so etwas kleines doch deutlich angenehmer :)
  • RE: java + dtrace kaputt?

    Schon wieder mein ganzes DTrace-Koennen verloren :(
    Aber:
    [font="monospace"]copyin(arg1, arg2)[/font]
    klingt mehr als boese, weil Du doch von userspace (java) arg1 versuchst in driverspace (dtrace) arg2 zu kopieren? Ich habe aber gesehen, dass das alles so im Internet vorgeschlagen wird. Mhhh... reicht nicht [font="monospace"]copyinstr(arg1),copyinstr(arg2)[/font]? Ich kenne das Format von java-funktionsaufrufen leider erst recht nicht.

    EDIT:
    Ok, grade gesehen, arg1 ist die String-Laenge, arg2 der eigentliche String. Hatte wohl das falsche copyin nachgeschlagen, von daher sieht es erstmal korrekt aus.....merkwuerdig.

    EDIT2:
    Hab arg1 und arg2 vertauscht, ist natuerlich andersherum.
    Du kannst einmal testweise noch in Deinem Fall arg4 (die laenge des zweiten Strings) zusaetzlich ausgeben. Bei der einen Fehlerhaften "<init>" muesste es ja 6 sein. Wenn dem so ist, er aber trotzdem mehr ausgibt, ist scheinbar entweder copyin oder stringfrom kaputt. Seltsam. Wenn es nicht 6 ist, scheint Dein Java kapuut ;)
    C++
  • RE: java + dtrace kaputt?

    Hmmm, also in den meisten Beispielen hatte ich das mit stringof(copyin(arg1, arg2)) gefunden und so benutzt. Aber Moment… auf einer anderen Seite habe jetzt eine Version mit copyinstr gefunden. Und siehe da - das läuft besser :)
    sudo dtrace -qn 'hotspot*:::method-entry { printf("%s.%s\n",copyinstr(arg1, arg2),copyinstr(arg3, arg4)); }'
    Damit bleiben die Ergebnisse sauber - auch für länger :)