Clion problem z debuggerem

Clion problem z debuggerem
simonsoft
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 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:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:ponad rok
  • 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:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:prawie 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:prawie 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:prawie 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:prawie 5 lat
  • Postów:159
0

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

DA
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:prawie 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:około 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:ponad 7 lat
  • Ostatnio:4 miesiące
  • 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:prawie 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:prawie 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:prawie 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:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:prawie 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:prawie 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:prawie 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:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:prawie 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:prawie 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:prawie 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:około 6 lat
  • Ostatnio:około 6 godzin
  • Postów:141
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:prawie 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:prawie 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

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)