Pthreads and GDB?
Jan Chludzinski
jan.chludzinski@gmail.com
Tue Jul 12 17:17:00 GMT 2011
The 2 threads finish executing before I can set a break. Why? ---Jan
On Tue, Jul 12, 2011 at 1:15 PM, Jan Chludzinski
<jan.chludzinski@gmail.com> wrote:
> Sorry, I forgot to build with the -g option.
>
> But still as I'm stepping passed the 2 pthread_create() routines they
> finish executing before I can set a break. Why?
>
> ---Jan
>
>
> On Tue, Jul 12, 2011 at 1:02 PM, Jan Chludzinski
> <jan.chludzinski@gmail.com> wrote:
>>> Since cygwin1.dll is multithreaded, I routinely set breakpoints which
>>> are only hit in a thread. So, yes, gdb is supposed to be multi-thread
>>> aware.
>>
>> I have a 2 thread program. I set the break for main() and run (to main):
>>
>> (gdb) b main
>> Breakpoint 1 at 0x401191
>> (gdb) r
>> Starting program: /home/John/projects/pthreads/test1/a.exe
>> [New thread 3680.0x13e8]
>> Error: dll starting at 0x76ff0000 not found.
>> Error: dll starting at 0x76590000 not found.
>> Error: dll starting at 0x76ff0000 not found.
>> Error: dll starting at 0x76c40000 not found.
>> [New thread 3680.0xc7c]
>> Breakpoint 1, 0x00401191 in main ()
>>
>> Wait a few seconds and start to step:
>>
>> (gdb) n
>> Single stepping until exit from function main,
>> which has no line number information.
>> [New thread 3680.0x1410]
>> [New thread 3680.0x1540]
>> Counter value functionCount1: 1
>> Counter value functionCount2: 2
>> ...
>> Final count: 10
>> Program exited normally.
>>
>> As you can see the threads have finished executing, along with the
>> main thread, *before * I ever get a chance to step to the first
>> pthread_create(). Let alone set a break in a thread.
>>
>> Why?
>>
>> Thanks, Jan
>>
>> On Tue, Jul 12, 2011 at 6:16 AM, Jan Chludzinski
>> <jan.chludzinski@gmail.com> wrote:
>>> I went to GNU.org to read about GDB and threads since I'm having
>>> trouble working with ptheads under GDB on Cygwin. I notice this on
>>> the GNU.org web site:
>>>
>>> "Warning: These facilities are not yet available on every GDB
>>> configuration where the operating system supports threads. If your GDB
>>> does not support threads, these commands have no effect. For example,
>>> a system without thread support shows no output from `info threads',
>>> and always rejects the thread command, like this:"
>>>
>>> What the level of support for threads with GDB under Cygwin?
>>>
>>> Switching between threads causes seg-faults. Also, I thought that
>>> while you're stepping through one thread, the other threads weren't
>>> running? Shouldn't I be able to set a breakpoint in a thread before
>>> pthread_create() is invoked? Doesn't appear to be the case?
>>>
>>> ---Jan
>>>
>>
>
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list