Debugowanie aplikacji .NET


Recommended Posts

Cześć!

Pragnę dowiedzieć się, czy pozostali użytkownicy forum programujący z wykorzystaniem języków .NET (C#, VB.NET) są w stanie debugować swoje aplikacje pod ZwCAD2017?

Próbowałem zarówno w dwóch wersjach Visual Studio: 2015 oraz 2017. W obu przypadkach próba debugowania aplikacji w celu wychwycenia wewnętrznych niespójności w ZwCAD2017 kończy się zanim właściwie się zaczyna - komunikatem o wkroczeniu aplikacji w punkt debugowania, do którego kodu źródłowego nie ma dostępu (sugeruje to pozostawione break-pointy w zasadniczym kodzie ZwCAD2017).

Oryginalny komunikat:

The application is in break mode
Your app has entered a break state, but no code is currently executing that is supported by the selected debug engine (e.g. only native runtime code is executing).

Porady ogólne (nie związane z ZwCADem) znalezione w odmętach internetu dotyczące zmiany ustawień VS nie dają rezultatu, stąd pytanie do użytkowników forum - czy jesteście w stanie debugować swoje aplikacje pod ZwCAD2017?

 

 

Link to comment
Share on other sites

Dziękuję za odpowiedzi. VS 2012 zapewne niezbędny jest do kompilowania projektów napisanych w C++ - zgodność binarna z ZwCAD'em 2017, który jest kompilowany z wykorzystaniem MSVS 11.0.

W sprawie .NET:
- biblioteki ZwManaged oraz ZwDatabaseMgd korzystają z 4.0; nakładki mogą być targetowane pod 4.5 - biblioteka kompiluje się poprawnie, po załadowaniu ZwCAD widzi polecenia i stara się je wykonywać,
- przeanalizowałem przykłady, które Pan zamieścił; poza prostotą mają jedną cechę wspólną - brak implementacji interfejsu IExtensionApplication, służącego do zapewnienia logiki ładowania [metoda Initialize()] i rozładowywania [Terminate()] biblioteki.

Przykłady:

Public Class HelloWorld
    <CommandMethod("HelloWorld")>
    Public Sub HelloWorld()
        Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Hello World")
    End Sub
End Class


Public Class HelloWorldPlugin : Implements IExtensionApplication

    Public Sub Initialize() Implements IExtensionApplication.Initialize
        Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Inicjalizacja biblioteki")
    End Sub

    Public Sub Terminate() Implements IExtensionApplication.Terminate

    End Sub
End Class

Wstawienie punktu przerwania w implementacji metody Initialize() powoduje błąd o którym pisałem w pierwszym poście, a co za tym idzie brak możliwości "podejrzenia" działania aplikacji.

Oczywiście, można kombinować i w celu testów przenieść zawartość inicjalizacji do innej funkcji, ale:
- konkurencja potrafi zrobić to porządnie, na etapie ZwCAD 2015 ZwSoft również,
- błąd debugowania zdarza się również w trakcie wywoływania poleceń, w różnych, losowych przypadkach; proszę sobie wyobrazić typową dla mnie sytuację, gdy jestem w trakcie poszukiwania przyczyny niepoprawnego działania funkcji w ZwCAD 2017 (na papierze wszystko jest pięknie - w bibliotekach .NET ZwSoft zamieścił referencje do wszystkich potrzebnych mi funkcji, jednak ich implementacja nie jest całkowita) śledząc jej działanie linia po linii aż tu nagle, zbliżając się do potencjalnego miejsca wystąpienia rozbieżności pomiędzy ZW2017 a resztą świata operacja zostaje przerwana przedmiotowym komunikatem. Wtedy muszę przerwać debugowanie, zmodyfikować kod zapisując do pliku lub wyrzucając do konsoli stan aplikacji, skompilować, uruchomić ponownie ZwCADa, załadować, wywołać funkcję, określić różnice, wrócić do początku - rozumiem, że ZwSoft nie uważał za opłacalne opracowanie interpretera AutoLispa (podobnie uczynili inni gracze poza prymusem), ale debugowanie aplikacji .NET metodami jak za czasów Lispa?
- wiem, że Państwo - administratorzy forum.cad.info.pl, firma Szansa nie jesteście właścicielami/decydentami ZwSoftu, ale kurczę, ... eh, dobra, proszę tylko o popchnięcie do Chin sprawy debugowania,

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share