Clion problem z debuggerem

Clion problem z debuggerem
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Witam, moze mi ktos pomoc bo nie moge ogarnac czemu mi sie nie pojawiaja zmienne w debugerze? Jestem niby connected ale nic nie moge zrobic, a Mingw mam zainstalowane, help please
Albo poleccie mi jakis program co jak w tym po prawej stronie sa podpowiedzi jak cos zle jest napisane. Z gory dziekuje

screenshot-20190519163045.png
screenshot-20190519163230.png

edytowany 3x, ostatnio: simonsoft
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
1

Nie wiem jak jest z CLion, ale po przyciemnionej ikonie run, a jasnej pause, przypuszczam, że program jest w stanie "run". Spauzuj go ikoną pauzy.

edytowany 1x, ostatnio: -daniel-
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
1

Może odpaliłeś debugger, ale nie doszedłeś do momentu uruchamiania Twojego kodu - dlatego też nie widzisz wartości zmiennych; spróbuj dać Run i niech dojdzie Ci do pierwszej czujki.


edytowany 1x, ostatnio: Patryk27
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
1

Pasowałoby jeszcze okienko stack coby się zorientować, gdzie jesteś, przez kilkukrotne step out wyjść do funkcji wywołującej, czasem debuger pchnie cię do niewłaściwego wątku, wtedy pomaga okienko threads, ale prościej będzie ustawić breakpoint zaraz na początku main.

P.S. powyżej była odpowiedź OP, ale się zbyła, więc moja odpowiedź odnosi się do niewidocznego już kodu z wywołaniem GetTlsValue.

edytowany 3x, ostatnio: -daniel-
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Daniel uratowales system, wystarczylo ze dalem breakpointa zaraz po mainie i dziala. DZIEKUJE BARDZO !! :D

edytowany 1x, ostatnio: simonsoft
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Masakryczny jest ten Clion, dochodz do funkcji i wchodze w nia a potem zatrzymuje mi sie debugger i nic nie moge zrobic, Polecacie jakies programy zeby po prawej stronie byly podpowiedzi i zeby debugger byl w miare normalny?
screenshot-20190519175919.png

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Sa zmienne, nagle klikam zeby lecial dalej i zatrzymuje sie i wszystko znika.
screenshot-20190519180304.png
screenshot-20190519180321.png

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Dobra instaluje Eclipse, mam nadzieje ze bedzie lepszy. Sorry za spam

DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
0

Nie używam CLion, ale Twoja sytuacja wygląda jakby Twój program gdzieś wpadał w nieskończoną pętlę.

To mi wygląda na ikonę od ramek stosu - dzięki niej można zobaczyć jakie funkcje odłożyły swoje ramki na stosie.

screenshot-20190519181911.png

edytowany 3x, ostatnio: -daniel-
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Odpalilem, ale nic to nie daje, jak klikam na next to znowu znika, masakra, sprobuje Eclipse. Dziekuje za pomoc tak czy siak

zdz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:68
0

Polecacie jakies programy zeby po prawej stronie byly podpowiedzi i zeby debugger byl w miare normalny?

Na Windowsie to moim zdaniem Visual Studio jest najlepszy. Qt Creator też jest godny polecenia.

edytowany 1x, ostatnio: zdz
KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
1

A w momencie jak Ci się debugger "wszystko znika", to nie zapominasz mu wrzucić znaku? Bo niewykluczone, że czeka na input ;)

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Wlasnie skonczylem konfigurowac Eclipse, ale mysle ze wlasnie Visual Studio zainstaluje. Dzieki wszystkim

Mc_Hammer
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
1

Zainstaluj sobie QtCreator. Tam są podpowiedzi na których Ci zależy, a poza tym daje więcej możliwości niż Eclipse. Visual z kolei (chyba) nie ma tych podpowiedzi.

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Wlasnie zainstalowalem i jest kozak, ale mam problem bo pokazuje mi tylko pierwsza wartosc w tablicy, a nie cala tablice w debugerze, moze wiesz co musze zmienic zeby bylo ? Wypelnia sie dobrze, ale caly czas pokazuje tylko pierwsza wartosc
screenshot-20190519215451.png

edytowany 1x, ostatnio: simonsoft
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Dobra juz ogarnalem ale ciezko ze tak przy kazdej tablicy ze wskaznikiem trzeba zmieniac zeby sie pokazywalo jako tablica. Ale ogolnie program sztos

DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
0

Jest jakiś głębszy sens, że zamiast vec[i] używasz *(vec+i), albo zamiast vec+i (eventualnie &vec[i]) używasz &(*(vec+i))?

edytowany 1x, ostatnio: -daniel-
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Tak, w tresci zadania nie moge uzywac odniesienia v[i] tylko musze *(v+i), wgl w zadnym zadaniu nie moge bo jest taki wymog..
Uwaga

Nie używaj odwołania tablicowego (T[xx]).

edytowany 2x, ostatnio: simonsoft
DA
A, jak mus, to mus.
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

moj ulubiony blad SIGSEGV , wie ktos co tutaj jest zle zrobione?

Kopiuj
int avg(const float* tab, unsigned int size, float *result)
if(tab == NULL || result == NULL) return 0;
    unsigned int i;

    for(i=0;i<=size-1;i++)
    {
        *result+=*(tab+i);          // Tutaj zrodlo bledu SIGSEGV 
    }
    *result = *result/size;

    return 1;
Kopiuj
int main() {
    float T[100], suma = 0, srednia = 0;
    float *tab = T, *sumeczka = &suma, *sredniczka = &srednia;
    int size = 0;


    sum(tab, size, sumeczka);
    avg(tab, size, sredniczka);
edytowany 2x, ostatnio: simonsoft
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
1

Co dostaniesz w wyniku:

Kopiuj
unsigned int i = 0;
i-=1;

(warunek i<=size-1 zamień na i<size).

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

dzieki, fakt ale czemu napisales i-=1; ? I da sie jakos efektywnie wykryc te bledy SIGSEGV? I tak musze poprawic te funkcje, bo sporo testow mi nie przechodza, masakra po prostu

edytowany 1x, ostatnio: simonsoft
Delor
Może być i=i-1 lub i--. Chodzi tylko o to co będzie w i po tej linii. Analogiczną sytuację masz w swoim kodzie (z inną nazwą zmiennej).
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
1

Debuger pomaga w eliminacji błędów SIGSEGV Powinien się zatrzymać na problematycznym kodzie, wtedy podglądasz wartości zmiennych. Zobaczyłbyś, że i jest większe od 100 i pozostałoby szukanie - dlaczego? Osobiście najbardziej lubię debuger z Visual Studio.

Wracając do

Nie używaj odwołania tablicowego (T[xx])

możliwe, że chodzi o technikę eliminacji indeksu. Taki przykład:

Kopiuj
void fill( double* dst, int dst_size, double fill_value )
{
    int i;
    for ( i = 0 ; i < dst_size ; ++i )
        dst[ i ] = fill_value;
}
/* Z eliminacją indeksu */
void fill( double* dst, int dst_size, double fill_value )
{
    double* end = dst + dst_size;
    for ( ; dst < end ; ++dst )
        *dst = fill_value;
}
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0
-daniel- napisał(a):

Debuger pomaga w eliminacji błędów SIGSEGV Powinien się zatrzymać na problematycznym kodzie, wtedy podglądasz wartości zmiennych. Zobaczyłbyś, że i jest większe od 100 i pozostałoby szukanie - dlaczego? Osobiście najbardziej lubię debuger z Visual Studio.

Wracając do

Nie używaj odwołania tablicowego (T[xx])

możliwe, że chodzi o technikę eliminacji indeksu. Taki przykład:

Kopiuj
void fill( double* dst, int dst_size, double fill_value )
{
    int i;
    for ( i = 0 ; i < dst_size ; ++i )
        dst[ i ] = fill_value;
}
/* Z eliminacją indeksu */
void fill( double* dst, int dst_size, double fill_value )
{
    double* end = dst + dst_size;
    for ( ; dst < end ; ++dst )
        *dst = fill_value;
}

jeszcze sie nie spotkalem z debuggerem, ktory pokaze mi SIGSEGV

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Krew mnie zalewa, program dziala dobrze ale test sprawdza funkcje avg, podajac tablice i rozmiar, widze ze moja funkcja olewa sobie rozmiar i bierze 1 element wiecej, jak moge sprawdzic to u siebie co jest zle, bo siedze nad tym zenujacym zadaniem i nie moge sobie z nim poradzic, pomozcie mi prosze bo nie daje rady juz.

test : int res = avg((float[]){-3.779990, 0.275521, 0.410900, 4.680326}, 4, &result);

wynik powinien być równy 0.3966890916228847, a jest 2.219781⏎

Kopiuj
int avg(const float* tab, unsigned int size, float *result)
{
    if(tab == NULL || result == NULL) return 0;
    unsigned int i;

    for(i=0; i<size; i++)
    {
        *result += *(tab+i);
    }
    *result = *result/i;

    return 1;
}
Kopiuj
float T[100], suma = 0, srednia = 0;
    float *tab = T;
    int size = 0;
    unsigned int sizeS = 0;

avg(tab, sizeS, &srednia);
Delor
Nie ma dzielenia przez zero gdy size = 0?
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
1

Wyzeruj wartość *result przed operacjami lub użyj tymczasowej zmiennej i na końcu przypisz jej wartość do *result.

simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0
Delor napisał(a):

Wyzeruj wartość *result przed operacjami lub użyj tymczasowej zmiennej i na końcu przypisz jej wartość do *result.
No faktycznie, teraz nie pokazuje tych testow ze sa zle, ale tak czy siak nie rozumiem, bo wczesniej bralo wszystkie wartosci, a teraz poprzez przepisanie *result do zmiennej dziala poprawnie, nie kumam czemu, ale dziekuje bardzo, teraz juz zawsze bede przypisywal do innych zmiennych. A z tym dzieleniem przez 0 to sukcesywnie bede zmienial, bo jeszcze inne bledy mam ktore musze poprawic

edytowany 1x, ostatnio: simonsoft
Delor
Funkcja avg dodawała do istniejącej wartości *result. Nie zerowałeś jej więc wychodziły losowe liczby.
DA
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:142
1
simonsoft napisał(a):

jeszcze sie nie spotkalem z debuggerem, ktory pokaze mi SIGSEGV

Bo w Windows ten błąd to najczęściej 0xC0000005: Access Violation

Tak pokazuje go Visual Studio

screenshot-20190520130735.png

Masz strzałeczką pokazane miejsce w programie, a w Autos możesz sprawdzić wartości, jeśli klikniesz przycisk Break.

A tak prezentuje to Qt - jakaś starsza wersja zapodziana na dysku:

screenshot-20190520131954.png

edytowany 1x, ostatnio: -daniel-
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

No po wielu testach roznych programow przysiadlem z QT i najbardziej mi odpowiada poki co, ale dzieki bardzo

DA
Dodałem obrazek z Qt Creatora. Pamiętaj tylko, aby wybrać Rozpocznij debugowanie lub Start debugger.
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 lat
  • Postów:159
0

Wczesniej wlasnie nie wyskakiwalo nic z tym bledem, zawsze klikam start debugging of startup project i sobie pokolei lece(> z kleszczem)
screenshot-20190520134830.png

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.