[lldb-dev] Breakpoint hitting on wrong thread

Greg Clayton gclayton at apple.com
Fri Oct 11 15:10:51 PDT 2013


I haven't seen this.

Set a breakpoint in both of the following functions:

b ThreadList::SetSelectedThreadByID
b ThreadList::SetSelectedThreadByIndexID

You should be able to catch who is setting this incorrectly.

Greg


On Oct 11, 2013, at 3:04 PM, Richard Mitton <richard at codersnotes.com> wrote:

> Hi,
> 
> I'm running into an issue on Linux where hitting a breakpoint won't change the currently selected thread index to that thread:
> Notice in this example how the current thread is #1, even though the breakpoint hit on thread #2. I only have one breakpoint set, and thread #2 is the only thread anywhere near that breakpoint.
> (lldb) b main.c:21
> (lldb) run
> Process 12353 stopped
> thread #2: tid = 12357, 0x000000000040076a a.out`fn_static(param=0x0000000000000000) + 30 at main.c:21, name = 'a.out', stop reason = breakpoint 1.1
>     frame #0: 0x000000000040076a a.out`fn_static(param=0x0000000000000000) + 30 at main.c:21
>    18   {
>    19           var_static *= 2;
>    20           for(;;)
> -> 21                   usleep(1); // thread breakpoint
>    22   }
>    23   
>    24   int main (int argc, char const *argv[])
> (lldb) thread list
> Process 12353 stopped
> * thread #1: tid = 12353, 0x00007f0d8e31cd3d libc.so.6`nanosleep + 45, name = 'a.out'
>   thread #2: tid = 12357, 0x000000000040076a a.out`fn_static(param=0x0000000000000000) + 30 at main.c:21, name = 'a.out', stop reason = breakpoint 1.1
> 
> Somewhat annoyingly, this only fails when inside a unit test, and works fine from the command-line.
> Has anyone seen anything like this before?
> -- 
> Richard Mitton
> 
> richard at codersnotes.com
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev




More information about the lldb-dev mailing list