That is my understanding of what the -f flag is supposed to do. It doesn't take an argument, it just directs gdb to do "future-break" rather than "break". The lldb MI should probably just parse & discard it.
Jim > On Jul 11, 2016, at 1:59 PM, Pierson Lee (PIE) <pierson....@microsoft.com> > wrote: > > So the instance I run into the error is setting a conditional breakpoint: > > -break-insert -f -c "x==0" main.cpp:13 > > And I get: > > MI: Error: Command Args. Validation failed. Args missing additional > information: f > ^error,msg="Command 'break-insert'. Command Args. Validation failed. Args > missing additional information: f" > > It seems in the tests/examples, -f is the last parameter and the > function/code location happens after the -f. > > From my understanding of the MI Command, the -f is a flag that tells it the > breakpoint is to be set as pending if the debugger cannot determine the > location of the breakpoint. The optional "parameter" doesn't seem to be used. > > Does this seem like a bug or am I misunderstanding what the -f flag does on > -break-insert ? > > Thanks > Pierson > > -----Original Message----- > From: Ted Woodward [mailto:ted.woodw...@codeaurora.org] > Sent: Monday, July 11, 2016 1:13 PM > To: Pierson Lee (PIE) <pierson....@microsoft.com>; jing...@apple.com; 'LLDB' > <lldb-dev@lists.llvm.org> > Subject: RE: [lldb-dev] Question about -break-insert in lldb-mi > > This is what Eclipse does when setting a breakpoint at main on a Hexagon > target, before -exec-run: > > TX:21-break-insert -t -f main > > -- > Qualcomm Innovation Center, Inc. > The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a > Linux Foundation Collaborative Project > > > -----Original Message----- > From: lldb-dev [mailto:lldb-dev-boun...@lists.llvm.org] On Behalf Of Pierson > Lee (PIE) via lldb-dev > Sent: Monday, July 11, 2016 1:33 PM > To: jing...@apple.com > Cc: lldb-dev@lists.llvm.org > Subject: Re: [lldb-dev] Question about -break-insert in lldb-mi > > If I don't specify the -f flag (with some random parameter), then a pending > breakpoint is not created and the initial binding fails. But if I specify the > -f with the random parameter, then it will bind when the library is loaded. > This is the behavior I see on gdb also, but sans the random parameter. I > looked at the source code and can't figure out what it expects the parameter > to be and what it does with the value. > > -----Original Message----- > From: jing...@apple.com [mailto:jing...@apple.com] > Sent: Friday, July 8, 2016 7:03 PM > To: Pierson Lee (PIE) <pierson....@microsoft.com> > Cc: lldb-dev@lists.llvm.org > Subject: Re: [lldb-dev] Question about -break-insert in lldb-mi > > > gdb used to try to find a symbol matching the breakpoint specification and if > it didn't find one immediately, it would raise an error. If you didn't want > this behavior (in a world with many shared libraries you seldom did) then you > could set a "future-break" which is what the -f flag turns on. This was > better though a bit bogus, because it would set the breakpoint the FIRST time > it took, then never look again. > > But this was quite a while ago, and I think gdb's gotten better about > organizing breakpoints. But I haven't used a modern gdb for a while, so I'm > not sure how it works now-a-days. > > Anyway, lldb's breakpoints don't work that way. They stay active till you > delete them, and keep searching for new matches every time a shared library > is loaded. You could make them emulate the gdb behavior by judiciously > deleting & duplicating breakpoints from the original specification, but > there's no way to get the native lldb breakpoints to do so (nor should there > be IMHO...) > > So if you are using the lldb-mi, there's no reason to bother with the -f > flag. But also lldb-mi should probably just ignore this flag. > > Jim > > >> On Jul 8, 2016, at 5:58 PM, Pierson Lee (PIE) via lldb-dev >> <lldb-dev@lists.llvm.org> wrote: >> >> Hi, >> >> I’m trying to use -break-insert and the -f flag for it. >> >> I noticed in MICmdCmdBreak.cpp , in CmICmdCmdBreakInsert::ParseArgs() that >> the -f has a required parameter. >> >> m_setCmdArgs.Add(new >> CMICmdArgValOptionShort(m_constStrArgNamedPendinfBrkPt, false, true, >> >> CMICmdArgValListBase::eArgValType_StringQuotedNumberPath, 1)); >> >> >> Based on the GDB MI documentation (at >> https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fsourceware.org%2fgdb%2fonlinedocs%2fgdb%2fGDB_002fMI-Breakpoint-Commands.html%23GDB_002fMI-Breakpoint-Commands&data=01%7c01%7cPierson.Lee%40microsoft.com%7c2f7fe625424341c8101908d3a79d5c33%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=vA0kav9epp3zRa4QivQ9wmimjEHYiJ0AiQfJcGKdzEs%3d) >> for -break-insert shows: >> >> ‘-f’ >> If location cannot be parsed (for example if it refers to unknown files or >> functions), create a pending breakpoint. Without this flag, gdb will report >> an error, and won't create a breakpoint, if location cannot be parsed. >> >> Is there a reason why it requires a parameter and what should this parameter >> be ? >> >> Thanks >> Pierson >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@lists.llvm.org >> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.llvm.org%2fcgi-bin%2fmailman%2flistinfo%2flldb-dev&data=01%7c01%7cPierson.Lee%40microsoft.com%7c2f7fe625424341c8101908d3a79d5c33%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mCckfTlDjZ8w%2fTvABG6OSj8kZIpC8VeHtjQqHYS8uAk%3d > > _______________________________________________ > lldb-dev mailing list > lldb-dev@lists.llvm.org > https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.llvm.org%2fcgi-bin%2fmailman%2flistinfo%2flldb-dev&data=01%7c01%7cPierson.Lee%40microsoft.com%7c258410127f594b7d43a308d3a9c7b6a0%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=v%2f9dViTplp3Q%2fkzdp6RujCg1B0lRkBUVCJS2wWKw2Bk%3d _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev