应用程序退出然后在控制台中挂起

时间:2013-06-12 16:50:51

标签: c++ gcc wxwidgets

我有一个GUI应用程序,我在Ubuntu Linux中使用GCC来构建它。应用程序正确构建并正确运行。问题是,当我通过菜单退出应用程序它退出但挂在控制台/终端上,直到我用Ctrl + C强制它。

这是我的代码(我已经删除了大部分内容,因为它正在保存内容)

void MainFrame::OnQuit(wxEvent& e)
{
    Destroy();
    delete m_pluginManager;
}

AFAIK Destroy() is supposed to destroy all children并且窗口消失了(对我来说这意味着它已经被摧毁)但似乎有什么东西挂在那里

我尝试过下面建议的朋友在GDB下运行,当它挂起时我会按Ctrl + C并使用backtrace,但我也无法理解BT。这是

回溯

0xb7fdd424 in __kernel_vsyscall ()
#1  0xb6f5cdcb in poll () at ../sysdeps/unix/syscall-template.S:81
#2  0xb66952db in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0xb66866d0 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0xb6686831 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0xb2351e80 in ?? ()
   from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
#6  0xb66abfc3 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#7  0xb7034d78 in start_thread (arg=0xb21ffb40) at pthread_create.c:311
#8  0xb6f6c3de in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:131

我的GCC版本(如果有关系)

 gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.7/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.3-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --enable-objc-gc --enable-targets=all --with-cloog --enable-cloog-backend=ppl --disable-cloog-version-check --disable-ppl-version-check --enable-multiarch --disable-werror --with-arch-32=i686 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1) 

注意:我做了一些编辑以反映问题的现状

1 个答案:

答案 0 :(得分:1)

Here's wxWidgets的Hello World。

规范的退出处理程序将是:

void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(true);
}