- print "backtrace, for converting raw addresses into symbolic backtraces\n";
- print "\n";
- print "usage: backtrace BINARY ADDRESS...\n";
- print "where BINARY is the binary file from which to obtain symbols\n";
- print " and each ADDRESS is a raw address to convert to a symbol name.\n";
- print "\n";
- print "In use with Pintos, BINARY is usually kernel.o and the ADDRESS\n";
- print "list is taken from the \"Call stack:\" printed by the kernel.\n";
- print "Read \"Backtraces\" in the \"Debugging Tools\" chapter\n";
- print "of the Pintos documentation for more information.\n";
+ print <<'EOF';
+backtrace, for converting raw addresses into symbolic backtraces
+usage: backtrace [BINARY] ADDRESS...
+where BINARY is the binary file from which to obtain symbols
+ and ADDRESS is a raw address to convert to a symbol name.
+
+If BINARY is unspecified, the default is the first of kernel.o or
+build/kernel.o that exists.
+
+The ADDRESS list should be taken from the "Call stack:" printed by the
+kernel. Read "Backtraces" in the "Debugging Tools" chapter of the
+Pintos documentation for more information.
+EOF