Nie można debugować, choć symbole są załadowane

Nie można debugować, choć symbole są załadowane
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 minuty
0

Zacznijmy od tego, że jest sobie folder, który fizycznie znajduje się w %APPDATA%\XXX i jest zmapowany jako dysk U. Dysk U jest dodany do zmiennej środowiskowej Path. Znajdują się tu biblioteki, z których korzysta Word.

Jedna z tych bibliotek to ABC.dll. W Output folder ma podany dysk U, w Debug -> Start Action -> Start external program: C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE

Word woła funkcje z niej w standardowy sposób:

Kopiuj
#If VBA7 Then
    Private Declare PtrSafe Function GetData Lib "ABC" (ByVal test As String) As Variant
#Else
    Private Declare Function GetData Lib "ABC" (ByVal test As String) As Variant
#End If

Generalnie działa, ale nie wpada w breakpointy.
Breakpoint jest biały z czerwoną ramką i warningiem:

The breakpoint will not currently be hit. No executable code of the debugger's target code type is associated with this line.
Possible causes include: conditional compilation, compiler optimizations, or the target architecture of this line is not supported by the current debugger code type.

Na liście modułów dllka pojawia się dwa razy (w momencie wywołania kodu z niej). W path ma podaną ścieżkę do %APPDATA%, nie do dysku U (w obu pozycjach jest taka sama). Symbole są załadowane, również w obu pozycjach, również z %APPDATA%. Teoretycznie jest to prawidłowy plik symboli. Nie wydaje mi się, by inaczej podana ścieżka (ale do tego samego przecież pliku) miała tu znaczenie, jednak wolę podać wszystkie szczegóły.

Conditional compilation? Jeśli chodzi o #if, to w tym miejscu kodu tego nie ma.
Compiler Optimization jest w opcjach odhaczone (Build -> Optimize code).
Pozostaje wtedy target architecture of this line is not supported. Przyznam, że nie rozumiem, jak to by się mogło stać. Platform target to x86, target framework to 3.5.

Czy macie jakieś pomysły, co może być przyczyną takiego zachowania? Oczywiście próbowałam już czyścić solucję, restartować VS i ręcznie usuwać pliki z output folder.

DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
0

Rozumiem że tam gdzie jest biblioteka ABC.dll jest ABC.pdb. A jak zrobisz bulid w Debug mode i skopiujesz ręcznie .pdb to dalej nie łapie breakpointów?


Yubby dibby dibby dibby dibby dibby dibby dum..
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 minuty
0

Rozumiem że tam gdzie jest biblioteka ABC.dll jest ABC.pdb.

Zgadza się. I ten własnie plik pdb jest załadowany.

A jak zrobisz bulid w Debug mode i skopiujesz ręcznie .pdb to dalej nie łapie breakpointów?

Ale gdzie go skopiować?

DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
0
aurel napisał(a):

Ale gdzie go skopiować?

Tam gdzie jest ABC.dll, czyli podmień plik ABD.pdb. Wiem że to wydaje się głupie, ale czasem działa. :)


Yubby dibby dibby dibby dibby dibby dibby dum..
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 minuty
0

Ale nie mam skąd podmienić ;) Plik pdb tworzy się od razu tam gdzie trzeba, czyli przy ABC.dll.

Zobacz pozostały 1 komentarz
aurel
Podpięłam się pod proces Worda. "No symbols have been loaded for this document". Na liście modułów nie ma załadowanej mojej dllki.
fasadin
to chyba jedynym wyjsciem bedzie logowanie (w sensie napisanie/sciagniecie prostego loggera i logowanie kazdej interesujacej Cie linijki)
aurel
Tak robię teraz, ale to nie jest żadne rozwiązanie...
xeo545x39
A na pewno proces Worda to ładuje? Może coś innego, czy pewna jesteś?
aurel
Kod wołający tą funkcję również pisałam ja, znajduje się on w szablonie Worda.
DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
0

A jak usuniesz foldery bin i obj i zrobisz rebulid to też nie łapie? :P


Yubby dibby dibby dibby dibby dibby dibby dum..
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 minuty
0

Niestety, usunięcie bin i obj nie pomogło. Folder bin to właściwie mi się nie tworzy (Output directory mam ustawiony na dysk U). Próbowałam również usuwać pliki z U (zarówno cleanem jak i ręcznie).

edytowany 1x, ostatnio: aurel
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)