User forums > Using Code::Blocks

[MinGW-gdb] new_allocator::deallocate() and SIGTRAP

(1/1)

MoonKid:
I am using the current MinGW on current WinXP with wxWdigets from SVN.

I am not able to debug. Because the debugger pause everytime on
new_allocator::deallocate(). It happens about 20 times at startup of my application and over 100 times while running my application.

The debugger message is

--- Code: ---Program received signal SIGTRAP, Trace/breakpoint trap.
In _libkernel32_a_iname () ()
At
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ext/new_allocator.h:86

--- End code ---


It is this piece of code

--- Code: ---     class new_allocator
     {
       // __p is not permitted to be a null pointer.
       void
       deallocate(pointer __p, size_type)
       { ::operator delete(__p); }

--- End code ---


This is the callstack:

--- Code: ---#0 00000000    0x7c91120f in _libkernel32_a_iname() (??:??)
#1 00000000    0x7c97c201 in _libkernel32_a_iname() (??:??)
#2 00000000    0x7c97c63e in _libkernel32_a_iname() (??:??)
#3 00000000    0x7c97d826 in _libkernel32_a_iname() (??:??)
#4 00000000    0x7c959e1c in _libkernel32_a_iname() (??:??)
#5 00000000    0x7c937553 in _libkernel32_a_iname() (??:??)
#6 00000000    0x77bfc2de in _libkernel32_a_iname() (??:??)
#7 662214D5    operator delete(void*) () (??:??)

#8 663020FD    __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned) (this=0x2c1f488, __p=0x512370 "") (C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ext/new_allocator.h:86)

#9 6633F3CB    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&) (this=0x512370, __a=@0x2c1f558) (C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.tcc:371)

#10 6633F48C    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_dispose(std::allocator<wchar_t> const&) (this=0x512370, __a=@0x2c1f558) (C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:218)

#11 66340494    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) (this=0x2c1f9d8, __str=@0x2c1f6a8) (C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.tcc:256)

#12 663419E0    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::operator=(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) (this=0x2c1f9d8, __str=@0x2c1f6a8) (C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:427)

#13 662F9FE4    wxString::operator=(wxString const&) (this=0x2c1f9d8, stringSrc=@0x2c1f6a8) (../../include/wx/string.h:1824)

#14 65B0DEC4    wxFileName::Assign(wxString const&, wxString const&, wxString const&, wxString const&, bool, wxPathFormat) (this=0x2c1f9b8, volume=@0x2c1f6d8, path=@0x2c1f6c8, name=@0x2c1f6b8, ext=@0x2c1f6a8, hasExt=true, format=wxPATH_NATIVE) (../../src/common/filename.cpp:352)

#15 65B0E5C6    wxFileName::Assign(wxString const&, wxPathFormat) (this=0x2c1f9b8, fullpath=@0x2c1fd08, format=wxPATH_NATIVE) (../../src/common/filename.cpp:457)

#16 004BE480    wxFileName::wxFileName(wxString const&, wxPathFormat) (this=0x2c1f9b8, fullpath=@0x2c1fd08, format=wxPATH_NATIVE) (C:/wxWidgets/include/wx/filename.h:127)

#17 0043EDA1    BFCore::VerifyFile(wxString const&, wxString const&, bool) (strFile1=@0x1c9ec2c, strFile2=@0x2c1fd08, bVerifyContent=false) (D:/Garage/projekte/blackfisk/trunk/src/BFCore.cpp:1341)

--- End code ---

You can see that everytime there is wxString involved! Any idea about that?

In my debuger options "catch C++ exceptions" is deactivated!

MoonKid:
No Idea?

ollydbg:
no, the debugger works fine on my windows xp system. Which Mingw system do you use?
I personally use TDM-mingw.

nanyu:
 :D It's not a secret that the mingw32+gdb can debug nothing but a "Hello world" program.   :(

ollydbg:

--- Quote from: nanyu on March 03, 2009, 03:50:54 am --- :D It's not a secret that the mingw32+gdb can debug nothing but a "Hello world" program.   :(

--- End quote ---
I do not agree.
I do have some experience on debugging with gdb and mingw.

It works really ok in all the console mode applications. Trace, step, break point, watch, all works fine.

Several days ago, I try to debug a wxWidget program, I set a break point in the wxWidget source code( I link to the debug version of wxWidget library, so, I think I can trace it source code). Surely, these piece code will be called from the OnPaint() function of my main frame. But It doesn't stopped on that break point. :(

The only workaround is that I set a break point in my OnPaint(), after it's stopped ther, I Step into wxWidget source code. ..a little annoying.

Also, there are other nightmares of debugging the wxWidget source :(.


Navigation

[0] Message Index

Go to full version