problēma

Vēlies radīt spēli, bet nezini ar ko sākt? Sperot pirmos soļus, vari meklēt padomu šeit
Message
Author
bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#31 Post by bubu » 16 Feb 2012, 01:47

Relīze modē tas ir defaultā ieslēgts - gan /O2 (-O2), gan /LTCG (-flto), gan /Zi (-g).
Tāpēc jau iepriekš brīnījos, ka "Varbūt projekta Debug konfigurācijai ir ieslēgta optimizācija?"

Bet vēlreiz saku - lietojam debugeri, soli pa solim izpildam rindiņas un skatamies kā mainās mainīgie. Ja būs ieslēgta optimizācija, tad tur jau uzreiz redzēs, ka kautkas nav labi ar mainīgo vērtībām.

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#32 Post by kristapuciitis » 16 Feb 2012, 10:42

Es neko nesaprotu =(
Gooby pls

snake5
Posts: 361
Joined: 07 Dec 2010, 03:54
Contact:

Re: problēma

#33 Post by snake5 » 16 Feb 2012, 10:54

2 varianti, kā debugot:
1) Saliec breakpointus dažādās vietās un skaties, cik tālu kods tiek. Kad programma uzkaras, izmet visus, izņemot pēdējo sasniegto, tālāk ar F10 (step over) ej uz priekšu. Ja uzkaras kādas funkcijas iekšpusē, uz tās funkcijas spied F11 (step into). Ja nejauši ieej funkcijā, kura nav vajadzīga, tam noder Shift+F11 (step out).
2) Palaid programmu un pēc uzkāršanās uzliec pauzi. Call stack'ā apskaties starp pazīstamajiem līmeņiem (tiem, kuri atrodas tavā kodā). Pirmais pazīstamais no augšas parasti būs vainīgs.

P.S. Breakpointu māki uzlikt / zini, kas tas ir?

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#34 Post by bubu » 16 Feb 2012, 11:00

Pārbaudi debug konfigurācijas projekta settingus - it īpaši vai optimizācija ir atslēgta.
Kad to izdarīsi, tad uzliec breakpointu main savas Load metodes sākumā, un ar F10/F11 izej cauri funkcijai pārbaudot lokālo mainīgo vērtības pēc katra soļa - vai tās satur to, ko tu esi iedomājies.
http://www.learncpp.com/cpp-tutorial/a4 ... eakpoints/
http://www.learncpp.com/cpp-tutorial/a5 ... all-stack/
Te vēl C#'am, bet principi tādi paši kā C++'am: http://www.codeproject.com/Articles/795 ... 0-A-Beginn

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#35 Post by kristapuciitis » 16 Feb 2012, 14:03

snake5 wrote: P.S. Breakpointu māki uzlikt / zini, kas tas ir?
Zinu, bet tagad salīdzināšu savu kodu ar http://lazyfoo.net/SDL_tutorials/lesson29/index.php , meklēšu atšķirības.
Pat tāda programma nokrašo bez nekādu ar draw saistītu funkc. izsaukšanu.

Code: Select all

#pragma comment (lib, "SDL.lib")
#pragma comment (lib, "SDLmain.lib")

#include <fstream>
#include <SDL.h>

int main (int argc, char* args[])
{
	std::ifstream map( "map.map" );
	if( map == NULL || map.is_open() == false)
	{
		return false; 
	}
	SDL_Init(SDL_INIT_EVERYTHING);
	SDL_Surface* screen;
	screen = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
	return 1;
};
Gooby pls

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#36 Post by kristapuciitis » 16 Feb 2012, 18:13

Tikko pamuļķojos un atklāju:
Ja std::ifstream file(""); ir ierakstīts main funkcijā, tad nenokarās; ja tajā pašā failā ir deklarēta atsevišķa funkcija loadLevel(const char* name) {std::ifstream file(""); } , tad arī nenokaras; ja tajā failā ir deklarēta class Level{ public: void Load(const char* name);}; , un deklarēta funkcija Level::loadLevel(..), tad arī nenokarās, ja tā klase un funkcija tiek pārnesta atsevišķā failā, tad arī nenokaras, bet tiklīdz Level.h failā ir klase, bet Level.cpp failā ir funkcijas deklarācija, tad jau nokaras. wtf

Edit: Ja clases un funkcijas deklarāciju atstāj Level.h failā, bet izveido jaunu un pavisam tukšu Level.cpp failu, tad arī nokrašo.
Gooby pls

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#37 Post by bubu » 16 Feb 2012, 18:28

Code: Select all

	std::ifstream map( "map.map" );
	if( map == NULL || map.is_open() == false)
	{
		return false; 
	}
map mainīgais NAV pointeris, to nevajag salīdzināt ar NULL. Ja grib zināt vai fails ir atvēries, to var darīt šādi:

Code: Select all

	std::ifstream map( "map.map" );
	if (!map)
	{
		return false; 
	}
kristapuciitis wrote:wtf
100 un 1 reizi prasu - ko tev saka debugeris? Kas precīzi krašo, un kurā rindā un kā? Paspaidi taču F11 !!!

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#38 Post by kristapuciitis » 16 Feb 2012, 18:34

bubu wrote: 100 un 1 reizi prasu - ko tev saka debugeris? Kas precīzi krašo, un kurā rindā un kā? Paspaidi taču F11 !!!
Kad uzspiežu debug mode un spaidu F11, tad, neatkarīgi no breakpoint salikšanas, visu laiku izlec logs un es tieku aizsūtīts uz kādu _file.c, kuru es nemaz nebiju rakstījis.
Attachments
Bez nosaukuma.png
Bez nosaukuma.png (22.95 KiB) Viewed 11457 times
Gooby pls

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#39 Post by bubu » 16 Feb 2012, 20:08

Kura ir pēdējā tava koda rindiņa, kura aizlec uz turieni?

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#40 Post by kristapuciitis » 16 Feb 2012, 20:25

Ja pieliek breakpointu pie katras funkcijas sākuma, arī pie main, tad vienalga uzreiz parādās tas logs un mani aizsūta pie cita faila. Nav tā, ka bultiņa parādās uz pointera un nekādi logi neizlec.
Gooby pls

Post Reply

Return to “Iesācējiem / For beginners”