Utilizzo Windows 8.1 a 64 bit con Visual Studio 2013 Ultimate. Sto facendo il porting di un programma da Linux a Windows che usa C++, OpenGL e SDL. Ho le librerie appropriate personalizzate compilate tramite cmake su 64-bit su Windows. Quando eseguo il programma da Visual Studio, l'IDE dice che c'è una corruzione alla testa. Questa non è una sorpresa dal momento che sto usando i puntatori per istanziare gli oggetti, e sto usando dei puntatori grezzi che ho intenzione di modificare in puntatori intelligenti per il gusto dell'argomento. Farò la magia boost più tardi.Come diagnosticare gli errori di danneggiamento dell'heap su Windows?
Nel frattempo, ho usato il mio computer Linux per diagnosticare eventuali perdite di memoria attraverso Valgrind e non c'era nulla di grave segnalato da Valgrind. Ho quindi proceduto all'utilizzo di CppCheck, ma non c'era nulla di serio neanche lì. Forse sono troppo indulgente qui e Windows potrebbe effettivamente prendere le cose meno serie più seria di Linux, il che è una sorpresa dal momento che MSVC tende ad essere più indulgente di GCC.
Quindi, il programma funziona su Linux e non su Windows. (Semplicemente fantastico!) E Visual Studio non sta aiutando lanciando eccezioni ovunque, il che mi fa odiare ancora di più Windows. Ho iniziato a cercare su Google una soluzione e mi sono imbattuto in questa cosa chiamata gflags o page helper, quindi ho installato gli strumenti di debug e ho provato a lanciare gflags ma non ho idea di come usarlo! In seguito ho scoperto che dovevi usare qualche altro strumento chiamato adp e quindi collegare gflags ad esso, così quando ho lanciato adp si blocca. Così ora non ho idea di cosa fare e sono sul punto di abortire la porta (che è divertente dato che molte persone si lamentano di quanto sia difficile portare i programmi da Windows a Linux mentre è vero il contrario).
Quindi, ora mi appello a questa community per assistenza: come faccio a eseguire il debug/diagnosticare errori di danneggiamento dell'heap che si verificano su Windows ma non su Linux? Dovrei davvero usare gflags o dovrei semplicemente usare il mio coraggio su questo?
VS ha un rilevatore di perdite di memoria intrinseca: https://msdn.microsoft.com/en-us/library/x98tx3cf(v=vs.120).aspx –
Hai utilizzato un debugger? Potresti anche provare i clang sanatizers su linux. Forse trovano qualcosa che valgrind e cpp check non hanno fatto. – MikeMB
Scusa se non ho risposto da un po '. Ho ancora questo problema, ma sembra provenire da un file .dll esterno. Non sono sicuro che sia un problema da parte mia o meno, basti dire che gli errori 0xFF della violazione di accesso sono fastidiosi! – Poriferous