This is the mail archive of the
frysk@sourceware.org
mailing list for the frysk project.
Re: [SCM] master: Add frysk.rsl loggin.
- From: Andrew Cagney <cagney at redhat dot com>
- To: Phil Muldoon <pmuldoon at redhat dot com>
- Cc: frysk at sourceware dot org
- Date: Wed, 13 Feb 2008 11:46:38 -0500
- Subject: Re: [SCM] master: Add frysk.rsl loggin.
- References: <20080212200324.2256.qmail@sourceware.org> <47B2102D.2030804@redhat.com> <47B2C3D7.7080702@redhat.com>
Phil Muldoon wrote:
Andrew Cagney wrote:
Phil,
There's a less leaky way to write this (if a specific sequence is
missing in Log, just add it).
Ok on the adding part, this will not work. Will add later:
finest.log(this,
"peek'ed() 0x", ((long) (buffer[0] & 0xff)),
" from address 0x", address, " offset 0x",
offset,
" from file: " , metaLine.name);
gets:
gcj -C -fsource=1.4 -d classes -g -O -g -classpath
../../frysk/frysk-core:.:../frysk-sys/frysk-sys.jar:../frysk-imports/jline.jar:../frysk-imports/antlr.jar:../frysk-imports/junit.jar:../frysk-imports/getopt.jar:../frysk-imports/jdom.jar:../frysk-imports/cdtparser.jar
-Wextraneous-semicolon \
@./files-java.list \
2>&1 | tee frysk-core.log
../../frysk/frysk-core/frysk/proc/dead/CorefileByteBuffer.java:128:
error: The method log(Object, String, Object, String, long, String,
long, String, int, String) in the type Log is not applicable for the
arguments (CorefileByteBuffer, String, long, String, long, String,
long, String, String)
finest.log(this,
Ah, given:
(CorefileByteBuffer, String, long, String, long, String, long, String,
String)
you'll want to add a method like:
public void log(Object self, String p1, long p2, String p3, long p4,
String p5, Object p6) {
if (!loggging)
return;
prefix(self); print(p1); print(p2); print(p3); print(p4);
print(p5); print(p6); suffix();
}
to the growing list; they get added on-demand :-). Notice the general
form. The parameters alternate between String <text> and Object / int /
long / ... <parameter>.
But what I really want is a hex string, converted by long. I do not
want to convert every single peek() call from decimal to hex in my
head. I guess I could do, Object, String, String, String, String ...
and convert each Long in the log call, but the end log result would be
just as messy as concating strings together.
Right; that is why a "long" parameter is always printed in hex, and an
integer parameter in decimal. Hence, instead of:
"address 0x" + Long.toHexString(address) + " ...."
(which allocates at least two objects - Integer.toHexString() creates a
String and "+" causes a StringBuffer to be created) try the simpler:
"address", address, "..."
It will most likely print what you want. If you've an integer and want
it in hex; cast it to a long vis:
"length", (long)length
Andrew