gdb

2012-03-16 16 views
5

साथ getopt का उपयोग कर बस अपना main() समारोह में getopt को शामिल किया हैgdb

getopt प्रत्येक कॉल

gdb साथ main() के माध्यम से कदम के लिए वैश्विक चर optarg सेट, getopt() कॉल के बाद optarg हमेशा NULL है (उदाहरण के (gdb) p optarg) अभी तक printf("%s\n", optarg) सीएमडी लाइन तर्क को अपेक्षित

क्या चल रहा है? दो समान क्यों नहीं हैं?

क्या यह जीडीबी के साथ एक मुकदमा है और यह ग्लोबल्स का निरीक्षण करने के लिए कैसे प्रयास करता है या कुछ और चल रहा है?

उत्तर

2

शायद संबंधित: Bug 13800 - gdb does not print right values of getopt-related values

यह भी ध्यान दें अर्थात्:

(gdb) n 
opt: 111, arg, 
0x804a040 
0x804a034 
0x804a020 
0x804a030 

(gdb) printf "%p\n%p\n%p\n%p\n", &optarg, &opterr, &optind, &optopt 
0x2ae760 
0x2ab0f4 
0x2ab0f8 
0x2ab0f0 

कहाँ:

(gdb) l 
6 int main(int argc, char *argv[]) 
7 { 
8  int c; 
9  while ((c = getopt(argc, argv, ":abf:o:")) != -1) { 
10   printf("opt: %d, %s, \n" 
11    "%p\n%p\n%p\n%p\n", 
12    c, optarg, 
13    &optarg, &opterr, &optind, &optopt); 

 संबंधित मुद्दे