Re: gcov can't collect data when process is executed by systemctl start but it can when executed by ./process

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017-07-31 14:05 +0200, Toebs Douglass wrote:
> On 31/07/17 13:04, Xi Ruoyao wrote:
> > By using exit(), the functions registered by atexit() and on_exit() would be
> > called.  GCC registers one atexit function to produce .gcda file.
> 
> Yups.  I have run into this problem in the past, too; a coveraged binary
> must exit() to generate coverage output.
> 
> > Even if without gcov, it's recommended to catch SIGTERM and terminate your
> > service cleanly.
> 
> What!
> 
> I didn't know this.
> 
> But you can't *do* anything much in a signal handler, no?

No we can't.  Normally it's just

bool is_terminating = false;

void handler(int signum)
{
  is_terminating = true;
}

And let the normal code (outside signal context) detect is_terminating, do some
clean up, and exit.
-- 
Xi Ruoyao <ryxi@xxxxxxxxxxxxxxxxx>
School of Aerospace Science and Technology, Xidian University



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux