Avatar billede Greenland Nybegynder
28. april 2009 - 12:16 Der er 5 kommentarer og
1 løsning

Debugging på kundens pc uden inst av visual studio

Hej,

Findes der noget værktøj til at debugge mit kørende program, uden at installere Visual Studio på maskinen.

Når der opstår en fejl med mit program på kundens pc, så popper der en besked op hvor man kan vælge "debuggers".

Kan man da vælge et "light weight" debug program og dermed debugge sin kode? og hvor finder jeg et sådant program ?


Greenland
Avatar billede arne_v Ekspert
29. april 2009 - 01:55 #1
Du kan godt uden VS.

Både ClrDbg og CorDbg kommer med .NET SDK, som er gratis at installere, og formentligt kan man hapse de relevante dele og XCOPY deploye dem.
Avatar billede htmlpower_karlmarx Nybegynder
29. april 2009 - 03:37 #2
Avatar billede Greenland Nybegynder
29. april 2009 - 14:28 #3
Tak for svar, jeg har prøvet debuggeren af, men hvordan debugger jeg en windows service?

cordbg accepterer kun at man viser til sit program fx.:
cordbg c:\mitprogram.exe
... og så starter cordbg programmet op !

Men når det er en service så går den ikke idet den skal startes fra servicemanager ?

nogen forslag (uden blot at installere visual studio på target maskinen)

Greenland
Avatar billede arne_v Ekspert
29. april 2009 - 15:29 #4
Saa vidt jeg ved kan cordbg ikke attache til en process.

Det giver 2 muligheder:

1) lav dit program saa det ogsaa kan koeres som console app og debug det

2) se om du kan faa ClrDbg til at koere ved at copiere hele det dir over
Avatar billede Greenland Nybegynder
04. maj 2009 - 11:15 #5
Tak for input.

Jeg valgte den "nemme" løsning at installera vs på target maskinen....

Dog kan man nemt debugge en service på sin egen udviklingsmaskine ved hjælp af følgende:

Inde i program.cs mainmethod:

  #if(DEBUG)
            {
                // Debug code: this allows the process to run as a non-service.
                // It will kick off the service start point, but never kill it.
                // Shut down the debugger to exit
                MyService service = new MyService();

                string[] args = new string[1];

                service.OnPublicStart(args);
                // Put a breakpoint on the following line to always catch
                // your service when it has finished its work
                System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

            }
            #else
            {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new MyService()
            };
            ServiceBase.Run(ServicesToRun);
            }
#endif


og inde i selve service´en:

#if(DEBUG)
        public void OnPublicStart(string[] args)
        {
            OnStart(args);
        }
#endif


Så kan man debugge sit service uden problemer ved at vælge Debug inde i Debug/Release comboboksen i visual studio
Avatar billede Greenland Nybegynder
04. maj 2009 - 11:16 #6
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester