У меня есть следующая маленькая программа на C ++
#include <stdio.h>
#include <stdlib.h>
int main(void) {
puts("!!!Hello World!!!");
return EXIT_SUCCESS;
}
Я компилирую в Mac OS X Leopard последний выпуск, используя:
g++ -g hello.cpp -o hello.exe
будучи г ++:
host:bin macbook$ g++ --ver
Using built-in specs.
Target: i686-apple-darwin9
Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --with-arch=apple --with-tune=generic --host=i686-apple-darwin9 --target=i686-apple-darwin9
Thread model: posix
gcc version 4.0.1 (Apple Inc. build 5493)
затем я пытаюсь отладить эту программу, используя fsf-gdb 7.1:
fsf-gdb hello.exe
поставить точку останова в main:
(gdb) b main
Breakpoint 1 at 0x1f8f: file hello.cpp, line 5.
запустить программу:
(gdb) r
Starting program: /Users/horacio/work/software/gdb/gdb-7.2-inst/bin/hello.exe
Breakpoint 1, main () at hello.cpp:5
5 puts("!!!Hello World!!!");
и попробуйте сделать шаг, и это произойдет:
(gdb) n
0x00003045 in ?? ()
Это вывод, если я делаю то же самое в Ubuntu Linux:
(gdb) n
!!!Hello World!!!
6 return EXIT_SUCCESS;
, где gdb = 7,1 и g ++ = 4,3,4
В чем проблема ???? Я, честно говоря, не понимаю, почему это не работает в Mac OS X.
Возможно, проблема в версии gdb, используемой в mac, или версии gcc в mac. Какие другие альтернативы существуют для GDB в Mac?
Заранее спасибо
PS: GDB Apple Leopard не выдает эту ошибку. Но я хочу использовать Eclipse CDT, и он не может работать с Apple GDB, поэтому я пытаюсь использовать версию GDB не Apple.