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
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to