Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #31919 > unrolled thread
| Started by | szykcech@gmail.com |
|---|---|
| First post | 2018-10-30 12:43 -0700 |
| Last post | 2018-11-21 05:17 -0800 |
| Articles | 10 — 4 participants |
Back to article view | Back to pl.comp.programming
g++ debug bez inicjalizacji pamięci szykcech@gmail.com - 2018-10-30 12:43 -0700
Re: g++ debug bez inicjalizacji pamięci Maciej Sobczak <see.my.homepage@gmail.com> - 2018-10-30 23:57 -0700
Re: g++ debug bez inicjalizacji pamięci szykcech@gmail.com - 2018-10-31 09:21 -0700
Re: g++ debug bez inicjalizacji pamięci szykcech@gmail.com - 2018-10-31 09:25 -0700
Re: g++ debug bez inicjalizacji pamięci bartekltg <bartekltg@gmail.com> - 2018-11-01 02:54 +0100
Re: g++ debug bez inicjalizacji pamięci szykcech@gmail.com - 2018-11-01 00:33 -0700
Re: g++ debug bez inicjalizacji pamięci bartekltg <bartekltg@gmail.com> - 2018-11-01 15:59 +0100
Re: g++ debug bez inicjalizacji pamięci Wojciech Muła <wojtek.mula@gmail.com> - 2018-10-31 10:06 -0700
Re: g++ debug bez inicjalizacji pamięci szykcech@gmail.com - 2018-10-31 10:19 -0700
Re: g++ debug bez inicjalizacji pamięci Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-21 05:17 -0800
| From | szykcech@gmail.com |
|---|---|
| Date | 2018-10-30 12:43 -0700 |
| Subject | g++ debug bez inicjalizacji pamięci |
| Message-ID | <2d28eae2-6996-4a78-a3ae-a0aec84a1a04@googlegroups.com> |
Witam Piszę w C++ i Qt na Linux-ie. Powracający problem jaki mam to różnice w działaniu wersji "debug" i "relese". Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. To powoduje, że błedy wychdzą dopiero w wersji release bo w debug wszystko działa. Oczywiście to czyni całą deweloperkę koszmarem, bo w wersji release mamy do dyspozycji tylko komunikaty na konsolę (których w tej wersji normalnie nie powinno być). Jest jakiś sprytny parametr kompilatora g++ który pozwolił by wyłączyć inicjalizację pamięci?!? Szukałem przez chwilę po internetach, ale nie znajduję nic sensownego... z góry dzięki i pozdro Szyk Cech -- http://szyk.jcom.pl/ http://szyk.free.of.pl/ http://szykcech.cba.pl/ http://szyk.000webhostapp.com/ http://www.geocities.ws/szyk/ http://szyk.wex.pl/
[toc] | [next] | [standalone]
| From | Maciej Sobczak <see.my.homepage@gmail.com> |
|---|---|
| Date | 2018-10-30 23:57 -0700 |
| Message-ID | <1955d2cc-8d0c-4eae-b9b9-611430b20aae@googlegroups.com> |
| In reply to | #31919 |
> Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? > To powoduje, że błedy wychdzą dopiero w wersji release Takie są najlepsze. -- Maciej Sobczak * http://www.inspirel.com
[toc] | [prev] | [next] | [standalone]
| From | szykcech@gmail.com |
|---|---|
| Date | 2018-10-31 09:21 -0700 |
| Message-ID | <2a9826bb-a908-43ee-bc3b-073287ad720b@googlegroups.com> |
| In reply to | #31920 |
W dniu środa, 31 października 2018 07:57:20 UTC+1 użytkownik Maciej Sobczak napisał: > > Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. > > Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release > > To powoduje, że błedy wychdzą dopiero w wersji release > > Takie są najlepsze. Dla mnie najgorsze, bo trzeba je lokalizować bez użycia śledzenia ani bez debugera.
[toc] | [prev] | [next] | [standalone]
| From | szykcech@gmail.com |
|---|---|
| Date | 2018-10-31 09:25 -0700 |
| Message-ID | <20039ed1-9ff4-4d5b-a1dd-df43f5a8e4a9@googlegroups.com> |
| In reply to | #31921 |
> G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release Jak mawiają us-mani: What I mean was: G++ kompilując program w wersji debug automatycznie dodaje kod inicjalizujący alokowaną pamięć zerami. G++ nie robi tego kompilując program w wersji release. Jasne?!?
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2018-11-01 02:54 +0100 |
| Message-ID | <prdmc9$e8b$1@node2.news.atman.pl> |
| In reply to | #31921 |
On 31.10.2018 17:21, szykcech@gmail.com wrote: > W dniu środa, 31 października 2018 07:57:20 UTC+1 użytkownik Maciej Sobczak napisał: >>> Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. >> >> Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? > > G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release Wydaje mi się, że Maciejowi chodziło o co innego: Co robisz, że używasz jakiejś pamięci, której nie dotknął konstruktor jakeigoś obiektu. Jeśli wychodzisz poza zakres vecrtora, opcja typu _GLIBCXX_DEBUG _GLIBXX_DEBUG_PEDANTIC czyba dodawały sprawdzanie poprawnośći zakresu gdy używałeś []. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | szykcech@gmail.com |
|---|---|
| Date | 2018-11-01 00:33 -0700 |
| Message-ID | <9f406662-30cc-4e29-8166-89ee3e2123be@googlegroups.com> |
| In reply to | #31926 |
> >>> Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. > >> > >> Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? > > > > G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release > > Wydaje mi się, że Maciejowi chodziło o co innego: > > Co robisz, że używasz jakiejś pamięci, której nie dotknął > konstruktor jakeigoś obiektu. Głowny problem w tym programie to wskaźniki i zmienne typu int (i ich warianty). Wskaźniki globalne i w klasach wyszukałem i zainicjalizowałem. Jednak problem może dotyczyć zmiennych lokalnych. Wygląda nato, że w wersji debug są inicjalizowane przez kompilator, a w wersji release nie... I ja chcę by w wersji debug nie były inicjalizowane - by szybciej znaleźć błąd.
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2018-11-01 15:59 +0100 |
| Message-ID | <prf4dd$nac$1@node2.news.atman.pl> |
| In reply to | #31927 |
On 01.11.2018 08:33, szykcech@gmail.com wrote: >>>>> Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. >>>> >>>> Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? >>> >>> G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release >> >> Wydaje mi się, że Maciejowi chodziło o co innego: >> >> Co robisz, że używasz jakiejś pamięci, której nie dotknął >> konstruktor jakeigoś obiektu. > > Głowny problem w tym programie to wskaźniki i zmienne typu int (i ich warianty). Wskaźniki globalne i w klasach wyszukałem i zainicjalizowałem. Wskaźniki to ogolnie coś, czego powinno się unikać w c++, ale rozumiem, ujowo napisana biblioteka do raspi w stylu procków embended 4kB ramu:-) Podobnie globalne... Może da się tego pozbyć;-) >Jednak problem może dotyczyć zmiennych lokalnych. >Wygląda nato, że w wersji debug są inicjalizowane przez kompilator, > a w wersji release nie... I ja chcę by w wersji debug nie były > inicjalizowane - by szybciej znaleźć błąd. Nie deklaruj zmiennych bez przypisania. Jeśli się nie da, a chcesz wyłapać (bez debugera;p) użycie wskażnika bez zainicjalizoanej wartości, inicjalizuj je na wartość, które na pewno wywali program. No, chyba, że przewidujesz, żę wskaźnik możę na nic nie pokazywać w trakcie działąnia praogramu i wszędzie sprawdzasz, czy nie jest nulem, to wtedy ręcznie inicjalizuj go na null. Ale IMHO to prawie zawsze gorsze rozwiazanie pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Muła <wojtek.mula@gmail.com> |
|---|---|
| Date | 2018-10-31 10:06 -0700 |
| Message-ID | <e1792b0b-7028-48bb-9b8e-d209c6c939bb@googlegroups.com> |
| In reply to | #31919 |
On Tuesday, October 30, 2018 at 8:43:20 PM UTC+1, szyk...@gmail.com wrote: > Witam > Piszę w C++ i Qt na Linux-ie. Powracający problem jaki mam to różnice w działaniu wersji "debug" i "relese". > Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. To powoduje, że błedy wychdzą dopiero w wersji release bo w debug wszystko działa. Oczywiście to czyni całą deweloperkę koszmarem, bo w wersji release mamy do dyspozycji tylko komunikaty na konsolę (których w tej wersji normalnie nie powinno być). Jest jakiś sprytny parametr kompilatora g++ który pozwolił by wyłączyć inicjalizację pamięci?!? Szukałem przez chwilę po internetach, ale nie znajduję nic sensownego... Odpalałeś pod valgrindem? Skompilowałeś z sanitizerami? w.
[toc] | [prev] | [next] | [standalone]
| From | szykcech@gmail.com |
|---|---|
| Date | 2018-10-31 10:19 -0700 |
| Message-ID | <0018c10e-f0a9-4a03-a9ae-626720976288@googlegroups.com> |
| In reply to | #31923 |
> Odpalałeś pod valgrindem? Pod Raspberry nie działa. > Skompilowałeś z sanitizerami? A co to?!?
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Muła <wojtek.mula@gmail.com> |
|---|---|
| Date | 2018-11-21 05:17 -0800 |
| Message-ID | <5912eda8-4539-4567-bf98-0014b11c55ac@googlegroups.com> |
| In reply to | #31924 |
On Wednesday, October 31, 2018 at 6:19:18 PM UTC+1, szyk...@gmail.com wrote: > > Skompilowałeś z sanitizerami? > > A co to?!? https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.programming
csiph-web