0

「最適化のために値が一時的に利用できない」という問題が発生していますが、が知る限り、デバッグを有効にしてコンパイルしています。

つまり、フラグを使用して-g -O0 -fno-inlineいるため、なぜこれがまだ起こっているのかわかりません。私が見逃したフラグですか?

コンパイラはg++-mp-4.6 (GCC) 4.6.3、OSはOSX 10.6Darwin Palace-of-the-Nine-Moons.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386

すべてのファイルに完全なコンパイル オプションがありg++-mp-4.6 -Wall -Werror -Wno-unused -g -O0 -fno-inline -I/usr/local/include -I../allig -std=c++0x -c src/Toolbox.cpp -o o/Toolbox.oます。

gdb セッション:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000021
[Switching to process 23874]
0x0000000100035d64 in al_get_bitmap_width ()
(gdb) bt
#0  0x0000000100035d64 in al_get_bitmap_width ()
#1  0x0000000100005e47 in Icon::resize (this=0x101244530, w=<value temporarily unavailable, due to optimizations>, h=<value temporarily unavailable, due to optimizations>) at ../allig/Icon.cpp:24
#2  0x0000000100005e1f in Icon::create_icon (this=0x101244530, _icon_size=<value temporarily unavailable, due to optimizations>) at ../allig/Icon.cpp:20
#3  0x000000010000ae24 in Icontainer::add_icon (this=0x101244210, tt=0x101244530) at ../allig/Icontainer.cpp:18
#4  0x0000000100002d58 in _al_mangled_main (argc=1, argv=0x7fff5fbff600) at src/mapedit.cpp:202
#5  0x000000010009ff17 in +[AllegroAppDelegate app_main:] ()
#6  0x00007fff82d45114 in __NSThread__main__ ()
#7  0x00007fff81f4afd6 in _pthread_start ()
#8  0x00007fff81f4ae89 in thread_start ()
(gdb) up
#1  0x0000000100005e47 in Icon::resize (this=0x101244530, w=<value temporarily unavailable, due to optimizations>, h=<value temporarily unavailable, due to optimizations>) at ../allig/Icon.cpp:24
24      ow=al_get_bitmap_width(icon);
Current language:  auto; currently c++
[...] 
(gdb) up
#2  0x0000000100005e1f in Icon::create_icon (this=0x101244530, _icon_size=<value temporarily unavailable, due to optimizations>) at ../allig/Icon.cpp:20
20      resize(_icon_size,_icon_size);
(gdb) print _icon_size
$2 = <value temporarily unavailable, due to optimizations>
(gdb) up
#3  0x000000010000ae24 in Icontainer::add_icon (this=0x101244210, tt=0x101244530) at ../allig/Icontainer.cpp:18
18      tt->create_icon(icon_size);
(gdb) print icon_size
$3 = 32 ' '
(gdb) quit

コード スニペット:

void Icon::resize (unsigned char w, unsigned char h) {
    unsigned short ow,oh;
    ow=al_get_bitmap_width(icon);

void Icon::create_icon (unsigned char _icon_size) {
    resize(_icon_size,_icon_size);
}

int Icontainer::add_icon (Icon *tt) {
    int ret=icons.size();
    tt->tool=TOOL_TILE;
    tt->create_icon(icon_size);

ついにここでアイコンサイズが利用可能になりました。

4

0 に答える 0