Membres inscrits :668
Membres en ligne : 0
Invités en ligne : 9


|
| Conversation (Résolue) : Comment debugger un code sous wxWidgets? |
berger (Nouveau membre)
Inscrit le : 21-05-2008
Messages: 6
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
Je précise ma question : mon programme se plante dans un wxPanel lors d'un changement d'onglet. Le debugger me donne une pile qui me semble incomplète du type > wxmsw292ud_core_vc_custom.dll!wxPanel::MSWGetCustomBgBrush() Ligne 64 + 0x12 octets C++ wxmsw292ud_core_vc_custom.dll!wxWindow::MSWGetBgBrushForChild(HDC__ * hDC=0x64011315, wxWindow * child=0x02196ed0) Ligne 4917 + 0x12 octets C++ wxmsw292ud_core_vc_custom.dll!wxWindow::MSWGetBgBrush(HDC__ * hDC=0x64011315) Ligne 4961 + 0x1a octets C++ wxmsw292ud_core_vc_custom.dll!wxWindow::DoEraseBackground(HDC__ * hDC=0x64011315) Ligne 4898 + 0xc octets C++ wxmsw292ud_core_vc_custom.dll!wxWindow::HandleEraseBkgnd(HDC__ * hdc=0x64011315) Ligne 4846 + 0xc octets C++ wxmsw292ud_core_vc_custom.dll!wxWindow::MSWWindowProc(unsigned int message=20, unsigned int wParam=1677792021, long lParam=0) Ligne 3302 + 0xc octets C++ wxmsw292ud_core_vc_custom.dll!wxWndProc(HWND__ * hWnd=0x000b0a8e, unsigned int message=20, unsigned int wParam=1677792021, long lParam=0) Ligne 2695 + 0x1e octets C++ user32.dll!7e398734() [Les frames ci-dessous sont peut-être incorrects et/ou manquants, aucun symbole chargé pour user32.dll] user32.dll!7e398816() user32.dll!7e3a8ea0() user32.dll!7e3a8eec() ntdll.dll!7c91e473() user32.dll!7e3aaf62() wxmsw292ud_core_vc_custom.dll!wxWindow::Show(bool show=true) Ligne 653 + 0x18 octets C++ 0f00147d()
Ce programme ne plantait pas avant un léger changement, passage de wxWidgets 2.9.1 à 2.9.2 et plpplot 5.9.7 à 5.9.8. Il y a un problème dans les évenements et je ne m'en sort pas.
Si quelqu'un à une idéee je le remercie d'avance de m'en faire part. ---------- Je n'ai pas trouvé comment debugger mais je pense avoir trouver une cause possible. Je fais l'initialisation du wxPanel avec quelque chose du genre
wxPanel* panel = new wxPanel( ongletPalette ,0,0,400,400);
en debugging j'arrive sur ce code
#ifdef WXWIN_COMPATIBILITY_2_8 wxDEPRECATED_CONSTRUCTOR( wxPanel(wxWindow *parent, int x, int y, int width, int height, long style = wxTAB_TRAVERSAL | wxNO_BORDER, const wxString& name = wxPanelNameStr) { Create(parent, wxID_ANY, wxPoint(x, y), wxSize(width, height), style, name); } ) // PRECISEMENT SUR CETTE LIGNE avec VC++2008 #endif // WXWIN_COMPATIBILITY_2_8
A la sortie je constate que panel->m_backgroundBrush vaut 0xcdcdcdcd
Donc évidement un bug pour plus tard.
Je dois dire que lors de la compilation j'ai un warning warning C4996: 'wxPanel::wxPanel': a été déclaré désapprouvé 1> c:\lib\wxwidgets-2.9.2\include\wx\msw\panel.h(52) : voir la déclaration de 'wxPanel::wxPanel'
et que j'ai mis dans setup.h WXWIN_COMPATIBILITY_2_8 0
J'ai compilé l'exemple notebook et tout se passe bien. Je ne comprends pas!
Dernière modification par berger (06-09-2011 09:49:08)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
Essayes d'utiliser le constructeur "classique" :
Code wxWidgets: Il n'y a pas de raison pour que ça ne marche pas.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
berger (Nouveau membre)
Inscrit le : 21-05-2008
Messages: 6
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci cela marche!
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Bonne nouvelle.
Je te laisse le soin de marquer le topic comme résolu (lien "Accepter" à droite du titre du post ayant résolu le problème).
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
|