Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using -g and -O2 options in gcc

Tags:

c

gcc

Does anybody experience mixing -g (debugging symbols) and -O2 (best safe optimization) with gcc compiler?
I have to debug crashes of a release program distributed to final users that could send me back the core file.
I've always used to call:

gdb << myprogram >> << core file >>

and see where the trouble is. Now I can just see the call-trace but having no debugging symbols I'm quite in trouble.

Any idea?

like image 953
Mr.Gate Avatar asked Jan 14 '11 15:01

Mr.Gate


2 Answers

It works fine.

Or well, due to the optimization sometimes the source you're stepping through with the debugger doesn't match up exactly with the source, but IMHO despite this having the debug symbols makes debugging much easier.

like image 152
janneb Avatar answered Oct 18 '22 09:10

janneb


We use both together in production environment, which makes debugging a lot easier if the customer have only seen a crash once. It gives you a pretty good idea where the problem is (not if it was a memory corruption).

In theory adding -g shouldn't really affect the performance, although the executable gets large. In embedded environment it is a big trade-off.

like image 25
tothphu Avatar answered Oct 18 '22 10:10

tothphu