View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000019 | Ecere SDK | ide:debugger | public | 2008-04-09 18:19 | 2014-05-19 01:32 |
Reporter | jerome | Assigned To | jerome | ||
Priority | immediate | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Target Version | 0.44.10 64 | Fixed in Version | 0.44.10 64 | ||
Summary | 0000019: Memory can't be read at (null) error in watches ... | ||||
Description | declaration.type DeclarationType Memory can't be read at (null) declaration Declaration Memory can't be read at (null) external External 0x00000000 It seems this was caused by an out of date build... Improve watch error messages. Call stack: 0 PrePreProcessClassDefinitions Function, src\firstPass.ec:574 1 ProcessDBTableDefinitions Function, src\dbpass.ec:1115 2 CompilerApp_Main Method, ecc.ec:399 3 main Function, Debug\ecc.main.ec:438 else if(external.type == declarationExternal) { Declaration declaration = external.declaration; if(declaration.type == initDeclaration) { | ||||
Additional Information | Code to reproduce: class TestClass { int bla; }; class MyApp : Application { void Main() { TestClass test = null; printf(""); } } Put a breakpoint at printf and watch test.a | ||||
Tags | No tags attached. | ||||
|
It seems this particular error message is given because the expression evaluator attempts to evaluate a member of a null pointer. The whole usage of Expression::type to identify errors in watches is obscure/broken at the moment. Debugger::ReadMemory returns an ExpressionType error, which is then simply assigned to the type of the expression being evaluated, thus losing any valuable information about the previous type of error (Which would indicate in the other fields what the address that was evaluated was). Yet, the Debugger::ResolveWatch watch method still uses that "type" member checking it is a constantExp (ironically, in a "case memoryErrorExp", therefore it is always false). This results in all memory errors to be displayed as "Memory can't be read at (null)" We would like to see the address in hexadecimal here. Consider using a different data member or completely different approach to identify an error. Investigate and document a proper way for the error codes to be propagated across the different steps of evaluation. Additionally, there is great inconsistency in the watch errors. When initially opening a workspace, the "Debugger Required" message appears for all watches (except those without an identifier, e.g. "1"). When hitting F10, all change to "No source file found for selected frame" which should only appear for those requiring a local identifier, global symbols (and constants) should still evaluate without a source file. Then when hitting Shift-F5, all watches are blanked out (as opposed to "Debugger Required"), even the constant ones which should still evaluate. (Special case to fix here: string literals!) |
|
Fixed by: https://github.com/ecere/ecere-sdk/commit/33c5435e63e0e3373d4a94726daa2e57154bd60c |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-04-09 18:19 | jerome | New Issue | |
2008-04-09 18:21 | jerome | Description Updated | |
2008-04-09 18:24 | jerome | Description Updated | |
2008-04-09 18:25 | jerome | Description Updated | |
2008-04-09 18:31 | jerome | Description Updated | |
2008-04-30 20:04 | jerome | Status | new => assigned |
2008-04-30 20:04 | jerome | Assigned To | => jerome |
2008-05-02 01:06 | jerome | Priority | normal => high |
2008-05-05 18:50 | jerome | Note Added: 0000026 | |
2008-05-05 18:50 | jerome | Assigned To | jerome => redj |
2008-05-05 18:50 | jerome | Additional Information Updated | |
2008-05-06 03:39 | jerome | Note Edited: 0000026 | |
2008-05-06 03:39 | jerome | Note Edited: 0000026 | |
2010-08-07 18:09 | jerome | Status | assigned => new |
2010-08-07 18:11 | jerome | Assigned To | redj => |
2010-08-07 20:44 | jerome | Relationship added | related to 0000535 |
2012-03-08 16:52 | redj | Target Version | => 0.45 Ginkakuji |
2012-03-29 07:52 | redj | Category | => ide |
2012-03-29 07:52 | redj | Project | @3@ => Ecere SDK |
2013-04-24 07:47 | jerome | Target Version | 0.45 Ginkakuji => 0.44.1 64 |
2013-04-24 07:48 | jerome | Relationship added | related to 0000502 |
2013-04-24 20:19 | jerome | Priority | high => immediate |
2013-08-08 05:50 | jerome | Category | ide => ide:debugger |
2014-04-30 09:41 | jerome | Assigned To | => jerome |
2014-04-30 09:41 | jerome | Status | new => assigned |
2014-04-30 09:41 | jerome | ETA | none => < 1 day |
2014-04-30 09:41 | jerome | Target Version | 0.44.12 Fixes => 0.44.10 64 |
2014-05-04 00:31 | jerome | Status | assigned => resolved |
2014-05-04 00:31 | jerome | Fixed in Version | => 0.44.10 64 |
2014-05-04 00:31 | jerome | Resolution | open => fixed |
2014-05-04 00:31 | jerome | Note Added: 0001263 | |
2014-05-19 01:32 | jerome | Status | resolved => closed |