Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[c++] dziwne błędy podczas debuggowania

Elektronik9 26 Maj 2011 01:16 942 6
  • #1 26 Maj 2011 01:16
    Elektronik9
    Poziom 30  

    Witam, taki problem:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Chodzi o linijkę:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    i debuggowanie w MS Visual C++ Express Edition 2008 SP1 - podczas krokowania F11 wyrzuca się przy wejściu do funkcji GenUniformInitialize() - coś z chkstk.asm, zauważyłem, że jak zmniejszę rozmiar tablicy poniżej tysiąca to jest ok. Co jest grane? I jak to naprawić?

    0 6
  • #2 26 Maj 2011 07:12
    krru
    Poziom 32  

    Pewnie za duży obiekt na stosie.
    Nazwa pliku sugeruje jakiś kod do sprawdzania stosu (check stack).
    int [5000] to jakieś 20KB stosu.

    0
  • #3 26 Maj 2011 10:33
    Elektronik9
    Poziom 30  

    Da się coś z tym zrobić? Nie tak dawno robiłem programy z tablicami o wiele większymi i nie było problemu...

    Jak powiększyć rozmiar stosu w VC++ 2008 EE ?

    Dodano po 37 [minuty]:

    Przy krokowaniu za pomocą F11 i wejsciu do funckji pokazuje błąd:

    Cytat:
    There is no source code available for the current location.

    i deasemblacja odsyła do:
    --- f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm

    Rozmiar stosu zwiększyłem w ustawieniach projektu do 10000000 i nic się nie zmieniło!

    Oto co wyrzuca Call Stack:
    Cytat:
    > symulka.exe!_chkstk() Line 69 Asm
    symulka.exe!GenUniformInitialize() Line 27 + 0xd bytes C++
    symulka.exe!main() Line 11 C++
    symulka.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C
    symulka.exe!mainCRTStartup() Line 403 C


    Pomocy :)

    0
  • #4 26 Maj 2011 13:57
    Eagle
    Poziom 23  

    Stos jest do zmiennych chwilowych o małym rozmiarze do większych używaj sterty.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Eagle

    0
  • #5 26 Maj 2011 14:06
    Elektronik9
    Poziom 30  

    Zrobiłem tak, ale teraz pokazuje mi to samo, ale przy wychodzeniu z funkcji round(). Dlaczego?

    0
  • #6 26 Maj 2011 14:33
    Eagle
    Poziom 23  

    Konkretnie ten kod co podałeś wywala taki błąd czy coś wyciąłeś co nadpisuje stos i zmienne ?

    W/g mnie kod coś "zaokrągla" a z wynikiem i tak nic nie robi ;) zmienna temp.

    Cytat:

    > symulka.exe!_chkstk() Line 69 Asm
    symulka.exe!GenUniformInitialize() Line 27 + 0xd bytes C++
    symulka.exe!main() Line 11 C++
    symulka.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C
    symulka.exe!mainCRTStartup() Line 403 C


    Tu nie jestem pewien ale "line 27" tyle linii nie ma twój soft. Więc problem może powodować coś czego tu nie pokazałeś.

    Eagle

    0
  • #7 09 Lip 2011 22:30
    Elektronik9
    Poziom 30  

    Ok dzięki. Problemem okazało się, że chciałem wchodzić "zbyt głęboko".

    0