Odczytywanie błędu

Odczytywanie błędu
agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Witam,

Jeżeli powstanie bład i windows wyświetli log na temat błędu to w jaki sposób odszukać miejsce w programie w którym powstał błąd.

Dla przykładu taki log:

Problem signature:
Problem Event Name: APPCRASH
Application Name: programFelerny.exe
Application Version: 0.0.0.0
Application Timestamp: 4a65db72
Fault Module Name: MSVCR80.dll
Fault Module Version: 8.0.50727.4918
Fault Module Timestamp: 49d43de9
Exception Code: 40000015
Exception Offset: 000046b4
OS Version: 6.1.7100.2.0.0.256.1
Locale ID: 1045
Additional Information 1: 0172
Additional Information 2: 017221b51940fd80759ba21636034f92
Additional Information 3: b30c
Additional Information 4: b30cef4fa8dc5042b8e06e860f858a7a

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt

Z kolei debuger Visuala tez nie mówi za wiele - jest coś takiego

Unhandled exception at 0x753eb4f4 in programFelerny.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0012ea7c..

Pozdrawiam

.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

debuger mówi wszystko
Nie obsłużony wyjątek. Przekroczyłeś gdzieś adres przydzielonej pamięci. Czyli np zaalokowałeś tablice na 10 elementów a chcesz do niej wpisać 40.

adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
0
agnieszka napisał(a)

Z kolei debuger Visuala tez nie mówi za wiele - jest coś takiego

Unhandled exception at 0x753eb4f4 in programFelerny.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0012ea7c..

Pozdrawiam
A jak uruchamiasz program ? Wciśnij F5 i będziesz miała wskazaną linijkę w której rzucono wyjątek.
Chodzi ci o to, że nie pokazuje ci linijki twojego kodu tylko np. źródła biblioteki standardowej ? Wtedy pomocny będzie stos wywołań (Debug->Windows->Call stack) dzięki któremu podglądniesz sobie jakie kolejno funkcje były wywoływane i idąc w górę dojdziesz do twojego kodu.

0

Otóż jest to aplikacja wielowątkowa i ciężko dojść do sedna problemu.
Fakt zatrzymuje się na odpowiedniej linijce - może źle pytam ale

W pliku od Visuala xstring jest kawałek kodu

Kopiuj
	_Myt& __CLR_OR_THIS_CALL assign(const _Myt& _Right,
		size_type _Roff, size_type _Count)
		{	// assign _Right [_Roff, _Roff + _Count)
		if (_Right.size() < _Roff)
			_String_base::_Xran();	// _Roff off end
		size_type _Num = _Right.size() - _Roff;
		if (_Count < _Num)
			_Num = _Count;	// trim _Num to size

		if (this == &_Right)
			erase((size_type)(_Roff + _Num)), erase(0, _Roff);	// substring
		else if (_Grow(_Num))
			{	// make room and assign new stuff
			_Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Right._Myptr() + _Roff, _Num);
			_Eos(_Num);
			}
		return (*this); // i tu właściwie się zatrzymuje
		}

Tak jak widać zatrzymuje się przy return. Jest Aplikacja która tych wątków ma około 20 (korzystam z WebBrowser) - i jeśli ja wyświetlę MessageBoxa poprzez kliknięcie Buttona to po chwili mam ten błąd. - Jak widać coś jest ze stringiem, jednakże postawienie tam breakpointa nic nie daje bo funkcja w ciągu sekundu jest wywoływana około 10 może 20 razy. Więc może pytanie powinno brzmieć - która funkcja spowodowała wywołanie owej funkcji z pliku xstring a nastepnie crash programu

Kopiuj
adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
0
Agnieszka2 napisał(a)

która funkcja spowodowała wywołanie owej funkcji z pliku xstring a nastepnie crash programu

Kopiuj
Edytowałem posta, może czytałaś starą wersję, powtórzę:

> pomocny będzie stos wywołań (Debug->Windows->Call stack) dzięki któremu podglądniesz sobie jakie kolejno funkcje były wywoływane i idąc w górę dojdziesz do twojego kodu.

Jest też kilka innych pomocnych narzędzie w <i>Debug->Windows</i>, pewnie przyda się:
 Threads - zobaczysz w którym jesteś wątku, przełaczysz się na inny wątek i zobaczysz co on w danym momencie robi (w której jest linijce)
 Breakpoints - możesz np. dodać warunek do brakepoint'a, program się zatrzyma na nim tylko wtedy, jeśli warunek będzie spełniony.
0

Dzięki za info ale sporo jest rzeczy o których nie wiem.
No dobrze ale to jest rozwiązanie na teraz czyli uruchamiam program powstaje błąd patrzę która linia, poprawiam i działa- więcej błedów nie ma więc visuala nie używam a po kilku dniach gdy program bedzie juz uruchamiany bez visuala otrzymam błąd i adres, event, sygnature lub cos w tym stylu - to co w takim przypadku mam zrobić? Powiedzmy że dla pomocy będzie uruchamiana wersja debug natomiast ReleaseCandidate poczeka. Jak odnaleźć to miejsce?

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)