eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingrzadki bład w programie w C++ › Re: rzadki bład w programie w C++
  • X-Received: by 2002:ac8:1498:: with SMTP id l24mr29279634qtj.169.1629726274160; Mon,
    23 Aug 2021 06:44:34 -0700 (PDT)
    X-Received: by 2002:ac8:1498:: with SMTP id l24mr29279634qtj.169.1629726274160; Mon,
    23 Aug 2021 06:44:34 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!n
    ews-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegrou
    ps.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Mon, 23 Aug 2021 06:44:34 -0700 (PDT)
    In-Reply-To: <9...@g...com>
    Injection-Info: google-groups.googlegroups.com; posting-host=213.192.68.153;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 213.192.68.153
    References: <9...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <4...@g...com>
    Subject: Re: rzadki bład w programie w C++
    From: Maciek Godek <g...@g...com>
    Injection-Date: Mon, 23 Aug 2021 13:44:34 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:215559
    [ ukryj nagłówki ]

    poniedziałek, 23 sierpnia 2021 o 14:59:04 UTC+2 r...@g...com napisał(a):
    > Napisałem program w C++. Zawiera błąd którego szczegółów nie znam. Błąd
    (niepoprawne wartości zapisywane do pliku) występuje rzadko, nie wiem w jakich
    okolicznościach. Wstawiłem asercje i testuję, niestety nie udało mi się odtworzyć
    problemu.
    > Jak podejść do problemu, jakiej strategii użyć? Co mogę zrobić poza asercjami?
    Debugowanie nie ma sensu bo błąd występuje zbyt rzadko.

    Strategia, która pozwoli w najprostszy sposób wyeliminować ten "błąd", to uznać go za
    ficzer.

    A tak serio, jeżeli Twoja wiedza o tym błędzie jest tak duża, jak wiedza, którą się
    tu podzieliłeś, odnośnie programu, który napisałeś, to nie widzę wielkich nadziei na
    uporanie się z nim.

    Możesz chociaż napisać:
    - w jaki sposób błąd się objawia
    - jak duży jest program
    - na jakim etapie rozwoju programu pojawił się błąd
    - czy możesz łatwo przepisać program np. na C# albo Javę

    Możesz też poszukać w okolicy jakiegoś kolegi-programisty, usiąść z nim i wspólnie
    przejrzeć kod.

    Rzecz w tym, że jak piszesz w C++ albo C, to możesz łatwo popełnić błąd w rodzaju
    przypadkowego nadpisania obszaru w pamięci, i tego rodzaju błędy są raczej trudne do
    wykrycia.

    Jeden z moich ulubionych to kod w rodzaju takiego czegoś:

    printf("liczba wynosi: "+n);

    Programista wychowany na C# będzie zaskoczony tym zachowaniem, a tymczasem to jest w
    pełni legalny kod w C: do adresu literału znakowego (który sam w sobie jest dość
    losowy) dodajemy jakąś liczbę, która w rezultacie daje nam jakiś inny adres, i spod
    tego adresu próbujemy teraz przekazać argument do funkcji printf.

    Rezultatem jest "nieokreślone zachowanie", czyli może się tak naprawdę zdarzyć
    cokolwiek.

    Czasem pomaga kompilacja kodu z flagami -Wall albo -Wextra - może pomoże wskazać
    miejsce w kodzie, w którym jest jakieś podejrzane użycie języka.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: