Profiling after exit()
Temtaime via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jul 28 02:02:10 PDT 2017
On Friday, 28 July 2017 at 08:06:33 UTC, Eugene Wissner wrote:
> On Friday, 28 July 2017 at 06:32:59 UTC, Jacob Carlborg wrote:
>> On 2017-07-27 16:30, Eugene Wissner wrote:
>>> I have a multi-threaded application, whose threads normally
>>> run forever. But I need to profile this program, so I compile
>>> the code with -profile, send a SIGTERM and call exit(0) from
>>> my signal handler to exit the program. The problem is that I
>>> get the profiling information only from the main thread, but
>>> not from the other ones.
>>>
>>> Is there a way to get the profiling information from all
>>> threads before terminating the program? Maybe some way to
>>> finish the threads gracefully? or manully call "write
>>> trace.log"-function for a thread?
>>
>> As others have mentioned, you should in general avoid calling
>> "exit" in a D program. There's a C function called "atexit"
>> that allows to register a callback that is called after
>> calling "exit". You could perhaps join the threads there. I
>> don't know if that helps with the profiling though.
>
> Unfortunately I can't join threads, because the program
> wouldn't exit then, the threads run forever normally. I thought
> maybe there is some way to kill a thread gracefully in linux,
> so it can write its profiling information; or another way to
> get profiling.
> Thanks anyway.
There's no "gracefully" way to kill a thread.
If your thread cannot join, then you're doing something wrong
More information about the Digitalmars-d-learn
mailing list