mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-09-05 17:44:55 -06:00
Improved displaying of strings in pdb debugger
git-svn-id: svn://ultimatepp.org/upp/trunk@1060 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
fd6055d881
commit
1e07f84e95
4 changed files with 39 additions and 15 deletions
|
|
@ -84,7 +84,7 @@ void Pdb::Sync0()
|
|||
for(int i = 0; i < f.param.GetCount(); i++) {
|
||||
if(i)
|
||||
r << ", ";
|
||||
r << f.param.GetKey(i) << "=" << Visualise(f.param[i], 30).GetString();
|
||||
r << f.param.GetKey(i) << "=" << Visualise(f.param[i]).GetString();
|
||||
}
|
||||
r << ')';
|
||||
if(c < 0)
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ void Pdb::TryAuto(const String& exp, const VectorMap<String, Value>& prev)
|
|||
try {
|
||||
CParser p(exp);
|
||||
Val v = Exp(p);
|
||||
Visualise(r, v, 2, 20);
|
||||
Visualise(r, v, 2);
|
||||
}
|
||||
catch(CParser::Error) {
|
||||
r.Clear();
|
||||
|
|
|
|||
|
|
@ -268,9 +268,10 @@ struct Pdb : Debugger, ParentCtrl {
|
|||
Val Multiplicative(CParser& p);
|
||||
Val Exp0(CParser& p);
|
||||
Val Exp(CParser& p);
|
||||
void Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int maxlen = 250);
|
||||
Visual Visualise(Val v, int maxlen = 250);
|
||||
Visual Visualise(const String& rexp, int maxlen = 250);
|
||||
void Visualise(Visual& result, Pdb::Val val, int expandptr, int slen);
|
||||
void Visualise(Visual& result, Pdb::Val val, int expandptr);
|
||||
Visual Visualise(Val v);
|
||||
Visual Visualise(const String& rexp);
|
||||
|
||||
// code
|
||||
int Disassemble(adr_t ip);
|
||||
|
|
|
|||
|
|
@ -48,8 +48,9 @@ bool IsOk(const String& q)
|
|||
return true;
|
||||
}
|
||||
|
||||
void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int maxlen)
|
||||
void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen)
|
||||
{
|
||||
const int maxlen = 300;
|
||||
if(result.length > maxlen)
|
||||
return;
|
||||
if(val.ref > 0 || val.type < 0)
|
||||
|
|
@ -62,7 +63,7 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
else {
|
||||
String x = ReadString(val.address, slen + 1);
|
||||
String dt;
|
||||
if(x.GetLength() > (IsOk(x) ? slen : 20)) {
|
||||
if(x.GetLength() > slen) {
|
||||
x.Trim(x.GetLength() - 1);
|
||||
dt = "..";
|
||||
}
|
||||
|
|
@ -73,7 +74,7 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
}
|
||||
if(expandptr > 0 && (val.type != UNKNOWN || val.ref > 1) && val.address) {
|
||||
result.Cat("->", SColorMark);
|
||||
Visualise(result, DeRef(val), expandptr - 1, slen, maxlen);
|
||||
Visualise(result, DeRef(val), expandptr - 1, slen);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -126,7 +127,7 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
Val r = t.member[i];
|
||||
r.address += val.address;
|
||||
try {
|
||||
Visualise(result, r, max(expandptr - 1, 0), 32, maxlen);
|
||||
Visualise(result, r, max(expandptr - 1, 0), slen);
|
||||
}
|
||||
catch(CParser::Error e) {
|
||||
result.Cat(e, SColorDisabled);
|
||||
|
|
@ -143,7 +144,7 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
result.Cat(t.static_member.GetKey(i));
|
||||
result.Cat("=", SColorMark);
|
||||
try {
|
||||
Visualise(result, t.static_member[i], max(expandptr - 1, 0), 32, maxlen);
|
||||
Visualise(result, t.static_member[i], max(expandptr - 1, 0), slen);
|
||||
}
|
||||
catch(CParser::Error e) {
|
||||
result.Cat(e, SColorDisabled);
|
||||
|
|
@ -167,7 +168,7 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
Val r = t.member[i];
|
||||
r.address += adr;
|
||||
try {
|
||||
Visualise(result, r, max(expandptr - 1, 0), 32, maxlen);
|
||||
Visualise(result, r, max(expandptr - 1, 0), slen);
|
||||
}
|
||||
catch(CParser::Error e) {
|
||||
result.Cat(e, SColorDisabled);
|
||||
|
|
@ -178,11 +179,33 @@ void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr, int slen, int m
|
|||
result.Cat(" }", SColorMark);
|
||||
}
|
||||
|
||||
Pdb::Visual Pdb::Visualise(Val v, int maxlen)
|
||||
void Pdb::Visualise(Visual& result, Pdb::Val val, int expandptr)
|
||||
{
|
||||
int cx = autos.HeaderObject().GetTabWidth(1);
|
||||
int l = 30;
|
||||
int h = 300;
|
||||
for(int i = 0; i < 8; i++) {
|
||||
int slen = (l + h) / 2;
|
||||
result.length = 0;
|
||||
result.part.Clear();
|
||||
Visualise(result, val, expandptr, slen);
|
||||
int x = 0;
|
||||
for(int i = 0; i < result.part.GetCount(); i++)
|
||||
x += GetTextSize(result.part[i].text, StdFont()).cx;
|
||||
if(x < cx)
|
||||
l = slen;
|
||||
else
|
||||
h = slen;
|
||||
if(l + 1 >= h)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Pdb::Visual Pdb::Visualise(Val v)
|
||||
{
|
||||
Visual r;
|
||||
try {
|
||||
Visualise(r, v, 2, 150, maxlen);
|
||||
Visualise(r, v, 2);
|
||||
}
|
||||
catch(CParser::Error e) {
|
||||
r.Cat(e, SColorDisabled);
|
||||
|
|
@ -190,13 +213,13 @@ Pdb::Visual Pdb::Visualise(Val v, int maxlen)
|
|||
return r;
|
||||
}
|
||||
|
||||
Pdb::Visual Pdb::Visualise(const String& exp, int maxlen)
|
||||
Pdb::Visual Pdb::Visualise(const String& exp)
|
||||
{
|
||||
Visual r;
|
||||
try {
|
||||
CParser p(exp);
|
||||
Val v = Exp(p);
|
||||
Visualise(r, v, 2, 150, maxlen);
|
||||
Visualise(r, v, 2);
|
||||
}
|
||||
catch(CParser::Error e) {
|
||||
r.Cat(e, SColorDisabled);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue