if broken it is, fix it you should
Dump anders even de betreffende code. Je zegt dat je wel een breakpoint bij het begin en niet bij het einde van een functie kan zetten. Misschien heb je wel een stukje code welke gewoon nooit uitgevoerd zal worden...
1
2
3
4
5
6
7
| public void DoSomething() { Console.WriteLine("Hello World"); return; Console.WriteLine("Goodbye cruel world"); } |
De twee Writeline zal in dit geval nooit uitgevoerd worden en mogelijk heb jij ook een soortgelijk probleem, alleen dan minder opzichtig..
If it isn't broken, fix it until it is..
Wat ik soms had, bij het debuggen van .NET remoting services, was dat ik helemaal niet kon debuggen.
Het weggooien van de temporary asp.net files hielp dan.
https://fgheysels.github.io/
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Code dumpen wordt lastig; vindt mijn bedrijf niet al te leuk...Niemand_Anders schreef op donderdag 17 september 2009 @ 09:04:
Heb je het probleem ook op een andere machine?
Dump anders even de betreffende code. Je zegt dat je wel een breakpoint bij het begin en niet bij het einde van een functie kan zetten. Misschien heb je wel een stukje code welke gewoon nooit uitgevoerd zal worden...
C#:
1 2 3 4 5 6 7 public void DoSomething() { Console.WriteLine("Hello World"); return; Console.WriteLine("Goodbye cruel world"); }
De twee Writeline zal in dit geval nooit uitgevoerd worden en mogelijk heb jij ook een soortgelijk probleem, alleen dan minder opzichtig..
kort door de bocht:
1
2
3
4
5
6
7
8
| public void DoSomething() { //hier staat een breakpoint #1 Console.WriteLine("Hello World"); Console.WriteLine("Goodbye cruel world"); }//hier staat een breakpoint #2 |
hij komt bij breakpoint 1; beide writeline worden aangeroepen, maar komt niet bij breakpoint 2
Code is niet geoptimaliseert
Dit is de client client; maar ook als ik de cliente even uitschakel (lees aanmaken en versturen door // ) dan komt hij er niet. Het lijkt of hij niet WCF gebonden is.
[ Voor 8% gewijzigd door elgringo op 17-09-2009 09:13 ]
if broken it is, fix it you should
Verwijderd
[ Voor 97% gewijzigd door Verwijderd op 17-09-2009 09:24 ]
Verwijderd
Lees ik het nu goed en zet je de breakpoint daadwerkelijk op de regel van de accolades? Dat gaat niet werken niet, want daar staat geen instructie. Zo heb ik wel eens gehad dat ik dit wil debuggen:elgringo schreef op donderdag 17 september 2009 @ 09:12:
C#:
1 2 3 4 5 6 7 8 public void DoSomething() { //hier staat een breakpoint #1 Console.WriteLine("Hello World"); Console.WriteLine("Goodbye cruel world"); }//hier staat een breakpoint #2
hij komt bij breakpoint 1; beide writeline worden aangeroepen, maar komt niet bij breakpoint 2
1
| SomeObject o; // ik zet hier de breakpoint |
Echter, dat werkt alleen als ik ook echt het object o van een default waarde voorzie. Wellicht heb je dit probleem?
Je zegt dat de code niet geoptimaliseert is, maar hoe weet je dat zeker? Dit gebeurt tijdens de compilatie en de code waar je dan je breakpoint gezet denkt te hebben, is door de compiler 'verplaatst' (bij gebrek aan een betere uitleg
Wrong. De C# compiler injecteert net voor dit soort zaken NOOP voor en na een functie zodat je er WEL op kunt breaken.Verwijderd schreef op donderdag 17 september 2009 @ 09:23:
[...]
Lees ik het nu goed en zet je de breakpoint daadwerkelijk op de regel van de accolades? Dat gaat niet werken niet, want daar staat geen instructie. Zo heb ik wel eens gehad dat ik dit wil debuggen:
C#:
1 SomeObject o; // ik zet hier de breakpoint
Echter, dat werkt alleen als ik ook echt het object o van een default waarde voorzie. Wellicht heb je dit probleem?
Je zegt dat de code niet geoptimaliseert is, maar hoe weet je dat zeker? Dit gebeurt tijdens de compilatie en de code waar je dan je breakpoint gezet denkt te hebben, is door de compiler 'verplaatst' (bij gebrek aan een betere uitleg).
http://blogs.msdn.com/old...e/2007/08/17/4422794.aspx
[ Voor 3% gewijzigd door Snake op 17-09-2009 09:32 ]
Going for adventure, lots of sun and a convertible! | GMT-8
Verwijderd
Ok, ik corrigeer mezelf. Nu heb ik het even getest en als ik mijn breakpoint op een accolade zet dan zorgt de VS ervoor dat de breakpoint naar de eerst volgende instructie springt.
Die NOP instructie is nieuw voor mij. Zit dat ook in 1.1?
Ik blijf er wel bij dat er situaties zijn dat de code 'verplaatst' tijdens compilatie. Ik weet niet precies waardoor dit komt. Misschien dat versies niet gesynchroniseerd zijn of er idd optimalisaties hebben plaatstgevonden, maar waarschijnlijk is dat niet het geval bij de TS.
Of misschien perongeluk direct een ; achter een if - conditie of for - conditie gezet?
Heel simpel er staat eenVerwijderd schreef op donderdag 17 september 2009 @ 09:23:
[...]
Lees ik het nu goed en zet je de breakpoint daadwerkelijk op de regel van de accolades? Dat gaat niet werken niet, want daar staat geen instructie. Zo heb ik wel eens gehad dat ik dit wil debuggen:
C#:
1 SomeObject o; // ik zet hier de breakpoint
Echter, dat werkt alleen als ik ook echt het object o van een default waarde voorzie. Wellicht heb je dit probleem?
Je zegt dat de code niet geoptimaliseert is, maar hoe weet je dat zeker? Dit gebeurt tijdens de compilatie en de code waar je dan je breakpoint gezet denkt te hebben, is door de compiler 'verplaatst' (bij gebrek aan een betere uitleg).
1
| #pragma optimize off |
in de file.
Genoeg gegeind in de settings van een C# project kun je optimize code aanvink geen vink daar geen optimized code in je project.
Dit sluit natuurlijk niet uit dat de .NET objecten en de functies die je daarvan gebruikt niet geoptimaliseerd zijn.
[ Voor 6% gewijzigd door NC83 op 17-09-2009 14:49 ]
ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max
breakpoints bij het einde van de functie, de accolade, werken bij mij normaal iig wel en ga er van uit nu dus ook.
Ik heb ook geen unreachable code warnings of rare ifs. Het voorbeeld stukje code is echt zoals het is, alleen zijn de write lines andere functies die gewoon eindigen (Lees database acties, checkken of client bestaat etc) Deze functie doen het prima met de unit test. De hoofd functie ook, alleen het debuggen dus niet.
Het vreemde is wel dat hij hier soms wel stopt... Of zit er een unhidden feature in VS2008 die tijdsafhankelijk is
if broken it is, fix it you should