जब मैं जीसीसी के साथ रिलीज बिल्ड करता हूं (यानी मैं -g
निर्दिष्ट नहीं करता), मैं अभी भी बाइनरी में प्रतीकों के साथ समाप्त होता प्रतीत होता हूं, और उन्हें हटाने के लिए strip
का उपयोग करना पड़ता है। वास्तव में, मैं अभी भी कार्यों को तोड़ सकता हूं और जीडीबी में बैकट्रैक प्राप्त कर सकता हूं (हालांकि लाइन नंबरों के बावजूद)।जीसीसी गैर-डीबग निर्माण के लिए प्रतीक क्यों जोड़ता है?
यह मुझे आश्चर्यचकित करता है - क्या कोई यह समझा सकता है कि ऐसा क्यों होता है?
उदा
#include <stdio.h>
static void blah(void)
{
printf("hello world\n");
}
int main(int argc, char *argv[])
{
blah();
return 0;
}
gcc -o foo foo.c
nm foo | grep blah
:
08048374 t blah