Я новичок в Cygwin (и * nix в этом отношении) и не понимаю следующее поведение GDB. Я создал исполняемый файл, который намеренно приводит к SIGSEGV:
#include <iostream>
void Func(int i)
{
int* pFoo = NULL;
*pFoo = 1;
}
int main(int argc, char** argv)
{
Func(-50);
std::cout << "End of main()" << std::endl;
}
Я компилирую свой код, выполнив:
g++ test.cpp
Используя эту версию G ++:
g++ - версия
g++ (GCC) 5.4.0 Copyright (C) 2015 Free Software Foundation, Inc. Это бесплатное программное обеспечение; см. источник для условий копирования. Там нет гарантии; даже не для ИЗДЕЛИИ или ФИТНЕСА ДЛЯ ОСОБЕННОЙ ЦЕЛИ.
Когда я пытаюсь запустить эту программу в GDB, я не могу "увидеть" какие-либо переменные:
>gdb ./a.exe
GNU gdb (GDB) (Cygwin 7.10.1-1) 7.10.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-cygwin".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./a.exe...done.
(gdb) r
Starting program: /home/user/code/gdbtest/a.exe
[New Thread 6500.0x1c84]
[New Thread 6500.0x7a0]
Program received signal SIGSEGV, Segmentation fault.
0x000000010040111d in Func(int) ()
(gdb) bt
#0 0x000000010040111d in Func(int) ()
#1 0x000000010040113c in main ()
(gdb) f 0
#0 0x000000010040111d in Func(int) ()
(gdb) p i
No symbol "i" in current context.
(gdb) p pFoo
No symbol "pFoo" in current context.
(gdb) info locals
No symbol table info available.
(gdb) f 1
#1 0x000000010040113c in main ()
(gdb) p argc
No symbol "argc" in current context.
(gdb)
Может кто-нибудь объяснить, почему это происходит и как я могу исправить проблему?
Я также попытался скомпилировать с использованием "g++ -Og test.cpp", но это не привело к изменениям, описанным выше.