Line numbers in exception?

This forum is meant for questions and discussions about the X# language and tools
Post Reply
ic2
Posts: 1798
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

Line numbers in exception?

Post by ic2 »

When a program crashes in VO, you are almost always able to see where and this often means that you can solve the issue instantly in that indicated line.

In X#, when I get an exception, I do get a JIT debugger window and a kind of call stack, but every line number is 0. From earlier post I thought that adding the .PDB file should give line numbers but it doesn't.

I literally lose average 15 minutes with every unhandled exception (with handled exceptions it's often the same actually, in case someone would reply that) as I need to debug going through my program step by step which takes even more time as the poor VS way of "Entity debug off' doesn't properly work in X#.

Is there any way to at least have an idea where I should locate the source of an error?

Dick
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Line numbers in exception?

Post by wriedmann »

Hi Dick,
unfortunately there is no line number information in .NET executables, but they are in the pdb files.
Therefore I always build with debug information and deliver both exe and pdb files. In that manner I have always the correct exception callstack.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ic2
Posts: 1798
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

Line numbers in exception?

Post by ic2 »

Hello Wolfgang,
wriedmann post=26013 userid=336 wrote:unfortunately there is no line number information in .NET executables, but they are in the pdb files.
Therefore I always build with debug information and deliver both exe and pdb files. In that manner I have always the correct exception callstack.
So if I understand you correctly you must deliver a Debug instead of Release version together with the PDB files, and then you get line numbers in such an exception like this one:
windowsformsunhandledexception.png
windowsformsunhandledexception.png (8.08 KiB) Viewed 370 times
I don't remember having seen line numbers at all (while this is what I do during developing). Indeed the 0 line numbers are a Release exe (together with this PDB file which doesn't have any use then as I understand).

Dick
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Line numbers in exception?

Post by wriedmann »

Hi Dick,
since you can set different options for different compile settings, you can also set to write the line numbers to the pdb file even in production mode. Unfortunately I don't know how to do that with Visual Studio since I work with XIDE.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ic2
Posts: 1798
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

Line numbers in exception?

Post by ic2 »

Hello Wolfgang,

With your reply I may have found it. On the Solution Explorer, I selected Properties on the main project. Then I went to the option Debug in the left part of the screen. There's a combobox Generate Debug Information. This is empty. I have now selected Pdbonly which seems to go together with Configuration Active/Release.
I copied the new exe & pdf file to my working directory and let's see what this brings.

But I have another issue, see post below:

Dick
ic2
Posts: 1798
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

Line numbers in exception?

Post by ic2 »

I have another issue with error handling. In Winforms we use a DataGrid. Usually only later on a full day, with the program active for hours I suddenly get the following exception (some line numbers included below):

Code: Select all

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Windows.Forms.DataGridViewImageCell.PaintPrivate(Graphics g, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates elementState, Object formattedValue, String errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts, Boolean computeContentBounds, Boolean computeErrorIconBounds, Boolean paint)
   at System.Windows.Forms.DataGridViewImageCell.Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates elementState, Object value, Object formattedValue, String errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)


I then end up with a big red cross on the DataGrid which won't go away on refreshing it (no idea what kind of design that is supposed to be but it's a known 'feature' of a Winforms Datagrid).
Now I suspected a method called Private Method dataGridViewEmails_FormatCells

I embedded it with a TRY..CATCH and yes, I got an index was out of range error. Parameter index. On it's own none of the above was helpful. The methods mentioned in the error above are not mine and index is not a variable I use. So I suspect it's a line like this:

iColumn := e:ColumnIndex
or
iRecord := (Int)oDataGridView:Rows[e:RowIndex]:Cells["record"]:Value

Now I have 2 issues:

1 I don't know where the error came from (apart from missing line numbers which may have been solved, but no line of my own code is in the call stack of the above error message
2 The above exception error + the red cross still appears despite that I thought I handled the error in the TRY..Catch and saw that it reached that catch.

I am a bit out of ideas how to find this.

Dick
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Line numbers in exception?

Post by wriedmann »

Hi Dick,

these errors are hard to find because they are occurring deep in the framework (or better Windows Forms) code.What I do normally in these cases, is that I google the error message, and most of the time i find then an answer.
I would suspect that an item of your data source goes out of scope and gets garbage collected.

Wolfgang
P.S. please look at this page, maybe it helps you:
https://stackoverflow.com/questions/862 ... on-c-sharp
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Post Reply