{"id":20,"date":"2007-07-23T07:03:08","date_gmt":"2007-07-23T07:03:08","guid":{"rendered":"http:\/\/euve3303.vserver.de\/stefan\/blog\/?p=23"},"modified":"2007-07-23T07:03:08","modified_gmt":"2007-07-23T07:03:08","slug":"bytecode-instrumentation-mit-javaagent-fur-logging-und-debugging","status":"publish","type":"post","link":"https:\/\/cogito-ergo-blog.de\/blog\/2007\/07\/23\/bytecode-instrumentation-mit-javaagent-fur-logging-und-debugging\/","title":{"rendered":"Bytecode Instrumentation mit JavaAgent f\u00fcr Logging und Debugging"},"content":{"rendered":"<h3>JavaAgent<\/h3>\n<p>Bereits seit Java 5 besteht die M\u00f6glichkeit mit der JVM Option -javaagent eigene Klasse in das Klassenladen der VM einzuklinken und so zu ver\u00e4ndern bevor diese ausgef\u00fchrt werden. AspectJ nutzt das z.B. um Aspekte auf Bytecode Ebene &quot;einzuweben&quot;.<\/p>\n<\/p>\n<h3>Logging und Debugging<\/h3>\n<p>Ein sch\u00f6nes OpenSource Tool, welches sich diese M\u00f6glichkeit ebenfalls zu Nutze macht, ist: <a href=\"http:\/\/www.acelet.com\/limpidlog\/\" target=\"_blank\">LimpidLog<\/a><\/p>\n<p><!--more--><\/p>\n<p>Aber mit Logging ist es nicht genug! Wahrscheinlich hat man bei ACELet gedacht, wenn wir schon die ganzen Informationen f\u00fcrs Logging aufzeichnen, dann kann man das doch auch ganz gut f\u00fcr&#8217;s Debuggen benutzen.<\/p>\n<p>Und so entstand wahrscheinlich <a href=\"http:\/\/www.acelet.com\/super\/LimpidDebugger\/\">LimpidDebugger<\/a>, der im Gegensatz zu &quot;normalen&quot; Debuggern kein Live-Debugger ist, sondern das Programm auf einem vorher aufgezeichneten Pfad durchl\u00e4uft. In manchen Situationen sehr n\u00fctzlich wie ich finde.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaAgent Bereits seit Java 5 besteht die M\u00f6glichkeit mit der JVM Option -javaagent eigene Klasse in das Klassenladen der VM einzuklinken und so zu ver\u00e4ndern bevor diese ausgef\u00fchrt werden. AspectJ nutzt das z.B. um Aspekte auf Bytecode Ebene &quot;einzuweben&quot;. Logging &hellip; <a href=\"https:\/\/cogito-ergo-blog.de\/blog\/2007\/07\/23\/bytecode-instrumentation-mit-javaagent-fur-logging-und-debugging\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"_links":{"self":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts\/20"}],"collection":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":0,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"wp:attachment":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}