polyakov.alex added inline comments.
================
Comment at: lit/tools/lldb-mi/breakpoint/break-insert.test:10
+-file-exec-and-symbols a.out
+# CHECK-AFTER: ^done
+
----------------
labath wrote:
> polyakov.alex wrote:
> > labath wrote:
> > > polyakov.alex wrote:
> > > > labath wrote:
> > > > > I'm not familiar with this directive. Are you sure that this actually
> > > > > does anything?
> > > > I tried to use only CHECK directive, but got errors like pattern not
> > > > found, so I decided that it may be caused due to CHECK search features,
> > > > for example, as I know, it finds pattern from the start of the file. If
> > > > we want to check lldb-mi output, we should follow a specific order.
> > > >
> > > > In our case, we should find "^done" string directly after -break-insert
> > > > command's output.
> > > I think you got the FileCheck operation wrong.
> > > a `CHECK` should always start matching from the previous match. The
> > > reason that this is passing for you now is that CHECK-AFTER is a
> > > non-existing directive and FileCheck ignores it (try replacing it with a
> > > bogus string and see if it still passes). if `CHECK` is not working for
> > > you here then you probably have the pattern wrong.
> > You are right about the CHECK-AFTER. I wrote the test using only check and
> > found an issue:
> > after executing of -exec-run command, we expect to see output like:
> > *stopped,reason="breakpoint-hit"
> > but, I think, that FileCheck check file for the pattern, while a -exec-run
> > hasn't finished yet. It means that there will not be expected output and
> > we'll get the error: no such pattern.
> >
> > Is there a mechanism to add some delay to FileCheck to wait until -exec-run
> > finished?
> >
> There shouldn't be a need for anything like that. FileCheck will wait until
> EOF before doing anything. In fact, if you try running the test script
> manually (`lldb-mi <break-insert.test`), you will see that lldb-mi in fact
> does *not* print out the `*stopped` line. What I expect is happening here is
> that lldb-mi reaches EOF, and then decides there is nothing left for it to do
> and exits (a somewhat reasonable assumption given that it's expecting to be
> talking via an interactive link).
>
> This sounds like a fairly fundamental problem with the lit+FileCheck testing
> strategy. If we're not able to come up with a command to make lldb-mi wait
> until the target stops (maybe there is one already? I know very little about
> lldb-mi), we may have to revisit the whole testing strategy...
I tried to run script manually (!!lldb-mi < break-insert.test!!) and got output
which isn't useful for testing !!-break-insert!! command since there isn't any
information about hitting breakpoint.
```
~/workspace/gsoc/build/bin/lldb-mi < ../break-insert.test
(gdb)
^done
(gdb)
^done
(gdb)
^done
(gdb)
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
^done
(gdb)
^done
(gdb)
=library-loaded,id="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",target-name="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",host-name="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",symbols-loaded="0",loaded_addr="-",size="0"
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00000000004004c6",func="breakpoint",file="break-insert.c",fullname="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert.c",line="2",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
^done
(gdb)
^done
(gdb)
^running
=thread-group-started,id="i1",pid="13757"
(gdb)
=thread-created,id="1",group-id="i1"
=thread-selected,id="1"
(gdb)
=library-loaded,id="/lib/x86_64-linux-gnu/ld-2.23.so",target-name="/lib/x86_64-linux-gnu/ld-2.23.so",host-name="/lib/x86_64-linux-gnu/ld-2.23.so",symbols-loaded="1",symbols-path="/usr/lib/debug/lib/x86_64-linux-gnu/ld-2.23.so",loaded_addr="-",size="0"
(gdb)
=library-loaded,id="[vdso]",target-name="[vdso]",host-name="[vdso]",symbols-loaded="1",symbols-path="",loaded_addr="0x00007ffff7ffa000",size="0"
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00000000004004c6",func="breakpoint",file="break-insert.c",fullname="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert.c",line="2",pending=["breakpoint"],times="0",original-location="breakpoint"}
(gdb)
(gdb)
=library-loaded,id="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",target-name="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",host-name="/home/alexander/workspace/gsoc/llvm/tools/lldb/lit/tools/lldb-mi/breakpoint/inputs/a.out",symbols-loaded="0",loaded_addr="-",size="0"
(gdb)
*running,thread-id="all"
(gdb)
^done
(gdb)
^error,message="error: Process is running. Use 'process interrupt' to pause
execution."
(gdb)
^done
(gdb)
```
Repository:
rL LLVM
https://reviews.llvm.org/D46588
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits