Eclipse Plugin für debug Manipulation

vaporizer

Erfahrenes Mitglied
Hallo

Also folgendes: Debuged man einen Code welcher eine Variable des Types Document hat, und man diese Variable einsehen möchte,
Sieht man nicht den xml Baum sondern lediglich: [#document: null]

Ich würde nun gerne ein Plugin bauen, dass wenn ich im Debugmodus auf ein Document klicke nicht [#document: null] sehe,
sondern den XML Baum als String.

Da ich noch nie ein Plugin für Eclipse entwickelt habe, würde ich mich über Tips,
Anregungen und Start-Infos freuen.

Ist es möglich dass dieses Plugin bei einem Klick auf das Document wärend des debuggens einspringt und mir das gewünschte Erlebnis liefert?

Ich habe auf eclipse.org eine api gefunden mit zB dem Packet
org.eclipse.debug.ui.memory usw.
muss ich diese api dafür verwenden?

wie gesagt ich habe da absolut keinen Plan..
würde mich also sehr für verschiedene Infos freuen.

mfg
Markus
 
Hallo,

schau mal unter
Preferences -> java -> Debug -> Detail Formatters
bzw.
Preferences -> java -> Debug -> Logical Structure

Dort kannst du zusätzliche Darstellungsmöglichkeiten für deine Objekte definieren.

Vielleicht hilft dir das ja schon etwas weiter.

Eine weitere Möglichkeit bietet dir die Display View.
In Verbindung mit dieser Klasse:
Java:
/**
 * 
 */
package de.tutorials.training;

import java.io.IOException;
import java.io.StringWriter;

import org.w3c.dom.Document;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

public class XMLHelper{
	public static String prettyPrint(Document doc){
		OutputFormat format = new OutputFormat(doc);
		format.setLineWidth(65);
		format.setIndenting(true);
		format.setIndent(2);

		StringWriter sw = new StringWriter();
		XMLSerializer serializer = new XMLSerializer(sw, format);
		try {
			serializer.serialize(doc);
		} catch (IOException e) {
			return e.toString();
		}
		return sw.toString();
	}
}

Kannst du so ganz einfach in der display view entsprechend deinem aktuellen Kontext sowas schreiben:

Beispiel:
Java:
package de.tutorials.training;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;


public class DebugHelperExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Document doc = DocumentBuilderFactory
				.newInstance()
				.newDocumentBuilder()
				.parse(
						new InputSource(new StringReader(
								"<data><a/><b/><c/></data>")));
		System.out.println(doc); //Breakpoint hier...
	}

}

Die lokale Variable doc ist nun im Scope also gehe ich nun in die Display View:
Gebe dort:
Code:
XMLHelper.prettyPrint(doc);
ein - markiere das Statement und drücke CTRL+SHIFT+D und bekomme folgende Ausgabe unten drunter:
Code:
	 (java.lang.String) <?xml version="1.0" encoding="UTF-8"?>
<data>
  <a/>
  <b/>
  <c/>
</data>

Reicht das?

Gruß Tom
 
also Preferences -> java -> Debug -> Detail Formatters
sieht schon mal sehr viel versprechend aus.

Werde mir das mal etwas genauer ansehn.
Danke dir auf jedenfall schon mal.
 

Neue Beiträge

Zurück