Gentlemen,
when we pass -d:1 option to cobra compiler than does it not pass /o- option to
CSharp compiler to not optimize.
in sharpdevelop when i tried debugging cobra i was able to breakpoint
but variables use to show infomation not available in optimized mode
well debugging and all is preety heavy handed subject for me so i thought maybe
i am doing something wrong and i maynot have implemented certain features of
Sharpdevelop for debugging to work.since it is able to breakpoint properly and not show
variable values must be wrong something with my implementation.
but then today i thought why not try to send argument to Csharp compiler through
-sharp-args to not optimize. to see what exactly this sharpdevelop mean by optimised code
and it worked!!!!
now still values are not available in the Editor window but down below
in Local Variables pane all values are nicely displaying their bargin. and one can easily
see while stepping through code what is going on in what variable.
So my question is to getinsight in debugging as to what exactly -d: option means
i understand that it should spit out some pdb or some stuff for debuggers to understand
when using debuggers to debug application and as just seen if even with -d: option the
code is optimized as well the pdb is made than does it mean no debugger will be
able to show values. or is it only sharpdevelop implementation that way.
if it would be true with all debuggers than it is better to pass /o- to Csharp as well
otherwise what use is -d option . thou i have hardcoded it now in sharpdevelop when programm is compiled in debug mode.
2) what might be the reasons for not being able to reference
certain assemblies.when i am mentioning the path correctly
with -lib: . i thought maybe that directory is protected
i checked and even removed readonly option from directory containing it
but still i am unable to reference certain asemblies while others
are getting referenced properly.this feature i have noticed after
i downloaded the latest version of cobra before it was referencing
same assemblies properly.if you could give certain guidelines for
referencing assemblies for me to check before i can blame
cobra for that.
a few days back Mr. todd a.(Alexander) was asking about getting errors
while debugging . in 64 bit windows 7. so this could have been the reason also. because csharp by default compiles for anucpu unless COBRA
changes to something else which i doubt and i am also not
specifying anything specific for platforms. so it might work by
specifying -sharp-args:/o-. on 64 bit platform also.thou i am about to
upadate it after clarifying the referencing issue.
what tool does everybody use for debugging cobra programms?
Thankyou
RIGHT_THEN
Forums
Does -d:1 not implement /o- in Csharp automatically
7 posts
• Page 1 of 1
Re: Does -d:1 not implement /o- in Csharp automatically
Hello M. RightThen
> So my question is to getinsight in debugging as to what exactly -d: option means
I've never searched through this issue, but it is the same when stepping in VS debugger, I'll try with csharp compiler arguments to report if that solves it (would be logical), I agree that passing debug option to cobra should cascade to csharp compiler
also nice to see someone working on integration of cobra in a .net IDE, I'll try to take a look at your work.
> what tool does everybody use for debugging cobra programms?
I'm using mostly VS (not as much usefull without var inspection) and unit tests
> So my question is to getinsight in debugging as to what exactly -d: option means
I've never searched through this issue, but it is the same when stepping in VS debugger, I'll try with csharp compiler arguments to report if that solves it (would be logical), I agree that passing debug option to cobra should cascade to csharp compiler
also nice to see someone working on integration of cobra in a .net IDE, I'll try to take a look at your work.
> what tool does everybody use for debugging cobra programms?
I'm using mostly VS (not as much usefull without var inspection) and unit tests
- gauthier
- Posts: 116
Re: Does -d:1 not implement /o- in Csharp automatically
hello Mr. gauthier
thanks for your input
Thankyou
RIGHT_THEN
thanks for your input
Thankyou
RIGHT_THEN
- RIGHT_THEN
- Posts: 99
Re: Does -d:1 not implement /o- in Csharp automatically
yo RIGHT_THEN,
You can see exactly what the cobra compiler invokes the C# compiler with by using -v:2 on the cobra compiler invocation line
Search for line starting with 'Code Provider' in the output
-d and -o compiler options get passed to the c# compiler ( tho only enable options) - looks like theres no combinatorial suppression options from the
various cobra compiler switches.
cobra compiler should probably explicitly suppress optimisation if debug is specified
(though a non brain damaged (Backend) compiler would do that anyway - (referring here to csc)
I'm old school - stop and think, relentless application of the scientific method and 'print' or 'trace' statements seems to be sufficient so far.
You can see exactly what the cobra compiler invokes the C# compiler with by using -v:2 on the cobra compiler invocation line
- Code: Select all
cobra -d:1 -v:2 hello.cobra
Search for line starting with 'Code Provider' in the output
-d and -o compiler options get passed to the c# compiler ( tho only enable options) - looks like theres no combinatorial suppression options from the
various cobra compiler switches.
- Code: Select all
cobra -d:1 -v:2 hello.cobra
Cobra Command Line 0.8.0 post-release
Copyright (C) 2003-2009 by Cobra Language LLC.
OS Version: Microsoft Windows NT 5.1.2600 Service Pack 3
CLR Platform: .NET
CLR Version: 2.0.50727.3603
Current Directory: C:\home\hops\src\cobra\Tst
Current Exe: C:\home\hops\src\cobra\wkspace\Source\cobra.exe
Option Dictionary:
reveal-internal-exceptions: true
color: true
debug: '+'
verbosity: 2
back-end: 'none'
contracts: 'inline'
correct-source: Set<of String>['none']
debugging-tips: false
embed-run-time: false
include-asserts: true
include-nil-checks: true
include-tests: true
include-traces: true
native-compiler: 'auto'
number: 'decimal'
testify-results: 'r-testify'
Paths:
hello.cobra
Phase: Binding Cobra run-time library
Referencing Cobra run-time
Adding reference to Cobra.Lang.dll
Phase: Reading libraries
Reading assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
at: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
Reading assembly: System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
at: C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll
Final assembly reference list:
0. Cobra.Lang.dll
Loading reference: Cobra.Lang.dll
Reading assembly: Cobra.Lang, Version=0.8.0.1, Culture=neutral, PublicKeyToken=null
at: C:\home\hops\src\cobra\Tst\Cobra.Lang.dll
Phase: Parsing source code
Parsing hello.cobra
Phase: Binding use directives
Phase: Binding inheritance
Phase: Binding interface
Phase: Computing matching base members
Phase: Binding implementation
Phase: Identifying .main
Phase: Generating C# code
Phase: Compiling C# code
Compiling to produce hello.exe
Code Provider = Microsoft.CSharp.CSharpCodeProvider
compilerOptions = "/r:Cobra.Lang.dll" "/debug+" "/nologo" "/nowarn:0108,0162,0169,0183,0184,0219,0414,0429,1717,1718" "/main:Hello" "
-lib:C:\home\hops\src\cobra\wkspace\Source"
referencedAssemblies = ['System.dll']
generateExecutable = true
outputAssembly = hello.exe
sharpFileNameList = ['hello.cobra.cs']
Deleting intermediate files.
Running: hello
cobra compiler should probably explicitly suppress optimisation if debug is specified
(though a non brain damaged (Backend) compiler would do that anyway - (referring here to csc)
what tool does everybody use for debugging cobra programms?
I'm old school - stop and think, relentless application of the scientific method and 'print' or 'trace' statements seems to be sufficient so far.
- hopscc
- Posts: 632
- Location: New Plymouth, Taranaki, New Zealand
Re: Does -d:1 not implement /o- in Csharp automatically
yo Mr. hopscc
thanks for the -V:2 tip. so i take it that you
cuncurr the validation of /o- switch with -d:1
unless there is some other explanation for it.
may i say sir that old habits die hard
or
old soilders never die they just fade away (pardon please)
@ gauthier pardon me sir if i got you wrong. to me above statement
implies that Var inspection is not possible the way you might want it
while debugging in VS. i just got it possible in a lay mans way.correct
me if you have better ideas.
now at the risk of sounding absurd and naive.
i want to share how to debug Cobra even with Visual Studio for new
comers like me .
HOW TO DEBUG COBRA PROGRAMMS
----------------------------
First Way:-
---------
since i dont have Vs 2008 professional or above i am using
VS 2008 Express and it does not allow Attach Process or if it does
enlighten me.
those who dont have professional or above editions can
downloaded Vs Integration shell which is free from
[url]http://www.microsoft.com/downloads/details.aspx?familyid=2e9a8c35-eb3d-43eb-9122-
a5ec195cd7bb&displaylang=en[/url]
install it,
it allows Attaching outside processes
compile the Cobra programms with -d:1 -sharp-args:/o-
but do the following in the main entry point function
i.e
now before we do anything else open all your Code files ie *.cobra files
being used in your programm inside VS shell through menu File->open and set
break points on the lines you want to pause at
let it be the first line. after Thread.sleep(..)
to see if it worked
now in menu Tools->Attach to Process.. click it
the new window opened displays all running instances under current user of
computer by default.
now Run your Cobra Programm`s exe that you want to debug either from
Sharpdevelop or from commandline in a way that no debugger is attached to it.
i think double clicking it would do.( if you dont have Sharpdevelop or dont
want to do it with command line)
now back to Vs Shell click refresh in the window displaying all running processes
you will be able to see the name of your Programm "exe" too listed there.
select it and click Attach. thats it all this while our proccess/programm was
sleeping and when it will wake up it will find a new Master that has enslaved it
your Visual studio. you will see control stopping at breakpoints and when you will
move your mouse over your File you will see variables displaying their values.
if it does not work the first time it will from second time onwards.
althou same can be done in sharpdevelop if you are making your programms
in sharpdevelop and compiling with -sharp-args:/o-.
Thankyou
RIGHT_THEN
thanks for the -V:2 tip. so i take it that you
cuncurr the validation of /o- switch with -d:1
unless there is some other explanation for it.
hopscc wrote:I'm old school - stop and think, relentless application of the scientific method and 'print' or 'trace' statements seems to be sufficient so far.
may i say sir that old habits die hard
or
old soilders never die they just fade away (pardon please)
gauthier wrote:I'm using mostly VS (not as much usefull without var inspection) and unit tests
@ gauthier pardon me sir if i got you wrong. to me above statement
implies that Var inspection is not possible the way you might want it
while debugging in VS. i just got it possible in a lay mans way.correct
me if you have better ideas.
now at the risk of sounding absurd and naive.
i want to share how to debug Cobra even with Visual Studio for new
comers like me .
HOW TO DEBUG COBRA PROGRAMMS
----------------------------
First Way:-
---------
since i dont have Vs 2008 professional or above i am using
VS 2008 Express and it does not allow Attach Process or if it does
enlighten me.
those who dont have professional or above editions can
downloaded Vs Integration shell which is free from
[url]http://www.microsoft.com/downloads/details.aspx?familyid=2e9a8c35-eb3d-43eb-9122-
a5ec195cd7bb&displaylang=en[/url]
install it,
it allows Attaching outside processes
compile the Cobra programms with -d:1 -sharp-args:/o-
but do the following in the main entry point function
i.e
def main is shared
Thread.sleep(10000) #we need enough time to attach this
#procees in VS debugger before it starts
#executing meaingful code
#so this should be implemented as
#the first line after entering main
#ALSO as yet i dont know any other way
#maybe through command line!!!
#then rest of your code
now before we do anything else open all your Code files ie *.cobra files
being used in your programm inside VS shell through menu File->open and set
break points on the lines you want to pause at
let it be the first line. after Thread.sleep(..)
to see if it worked
now in menu Tools->Attach to Process.. click it
the new window opened displays all running instances under current user of
computer by default.
now Run your Cobra Programm`s exe that you want to debug either from
Sharpdevelop or from commandline in a way that no debugger is attached to it.
i think double clicking it would do.( if you dont have Sharpdevelop or dont
want to do it with command line)
now back to Vs Shell click refresh in the window displaying all running processes
you will be able to see the name of your Programm "exe" too listed there.
select it and click Attach. thats it all this while our proccess/programm was
sleeping and when it will wake up it will find a new Master that has enslaved it
your Visual studio. you will see control stopping at breakpoints and when you will
move your mouse over your File you will see variables displaying their values.
if it does not work the first time it will from second time onwards.
althou same can be done in sharpdevelop if you are making your programms
in sharpdevelop and compiling with -sharp-args:/o-.
Thankyou
RIGHT_THEN
- RIGHT_THEN
- Posts: 99
Re: Does -d:1 not implement /o- in Csharp automatically
Instead of attaching to the program you can also add the following lines in your main or at the part you want to debug :
// Launch the debugger
sharp"System.Diagnostics.Debugger.Launch()"
// Add a breakpoint
sharp"System.Diagnostics.Debugger.Break()"
If you have compiled your Cobra program with -d:1 -sharp-args:/o- and then run it then Windows will prompt you to select a debugger and break at your breakpoint.
This works very well when you have Visual Studio 2010 running.
Strangely enough I didn't manage to directly write something like System.Diagnostics.Debugger.launch because this generated a NullReferenceException when I tried to compile my code.
Kind regards,
Samuel
// Launch the debugger
sharp"System.Diagnostics.Debugger.Launch()"
// Add a breakpoint
sharp"System.Diagnostics.Debugger.Break()"
If you have compiled your Cobra program with -d:1 -sharp-args:/o- and then run it then Windows will prompt you to select a debugger and break at your breakpoint.
This works very well when you have Visual Studio 2010 running.
Strangely enough I didn't manage to directly write something like System.Diagnostics.Debugger.launch because this generated a NullReferenceException when I tried to compile my code.
Kind regards,
Samuel
- gissolved
- Posts: 1
Re: Does -d:1 not implement /o- in Csharp automatically
The compiler was choking on a null value for a field of the Debugger class when reading its library symbols. I have checked in a fix with test case, and re-ran the test suite on both Win7/.NET and Mac/Mono.
Thanks.
Thanks.
- Charles
- Posts: 2515
- Location: Los Angeles, CA
7 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 79 guests