gdb v7.0 - user defined command's document section - space prefixed end

James Pandavan
2009-10-28T05:07:41Z

Hi,

I noticed some of my user defined commands defined in '.gdbinit' file
stopped working in gdb v7.0. They used to work in gdb v6.8. In trying to
troubleshoot, I went through the gdb source code.

In gdb v6.8, the init file processing logic was in
cli/cli-script.c:read_next_line(). The following code ignores all
leading (and trailing) spaces.

841 /* Strip leading and trailing whitespace. */
842 while (*p == ' ' || *p == '\t')
843 p++;
844
845 p1 = p + strlen (p);
846 while (p1 != p && (p1[-1] == ' ' || p1[-1] == '\t'))
847 p1--;

In gdb v7.0, the processing logic was in
cli/cli-script.c:process_next_line(). Apparently, the leading spaces are
ignored only for commands and not for comments. So, if I had a comment
section with and 'end' having prefixed spaces, gdb did not treat it as
end of comment section.

888 if (parse_commands)
889 {
890 /* Strip leading whitespace. */
891 while (*p == ' ' || *p == '\t')
892 p++;
893 }

So, removing all leading white spaces in line containing 'end' fixed my
problem for v7.0.

Assuming v7.0's has the correct and intended behavior (as it appears to
be so), shouldn't the document mention it?
(http://sourceware.org/gdb/current/onlinedocs/gdb_24.html#SEC249) Or am
I referring to wrong document?

Thanks,
James Pandavan

My gdbinit
file------------------------------------------------------------------------------------------------------------

|define enable_only
disable
enable $arg0
end
document enable_only
enables only the given breakpoint
end

define sstep
finish
step
end
|