Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
f3ed10a2
Commit
f3ed10a2
authored
Oct 14, 2003
by
Michal Janusz Miroslaw
Committed by
Alexandre Julliard
Oct 14, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extend displays: now one can add displays active only in specified
function; displays now can be enabled/disabled like in gdb.
parent
d0040595
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
193 additions
and
131 deletions
+193
-131
dbg.y
programs/winedbg/dbg.y
+23
-14
debug.l
programs/winedbg/debug.l
+9
-6
debugger.h
programs/winedbg/debugger.h
+3
-1
display.c
programs/winedbg/display.c
+146
-104
hash.c
programs/winedbg/hash.c
+5
-0
info.c
programs/winedbg/info.c
+7
-6
No files found.
programs/winedbg/dbg.y
View file @
f3ed10a2
...
...
@@ -52,8 +52,6 @@ int yyerror(const char *);
%token tCONT tPASS tSTEP tLIST tNEXT tQUIT tHELP tBACKTRACE tINFO tWALK tUP tDOWN
%token tENABLE tDISABLE tBREAK tWATCH tDELETE tSET tMODE tPRINT tEXAM tABORT tVM86
%token tCLASS tMAPS tMODULE tSTACK tSEGMENTS tSYMBOL tREGS tWND tLOCAL tEXCEPTION
%token tPROCESS tTHREAD tEOL tEOF
%token tCLASS tMAPS tMODULE tSTACK tSEGMENTS tSYMBOL tREGS tWND tQUEUE tLOCAL tEXCEPTION
%token tPROCESS tTHREAD tMODREF tEOL tEOF
%token tFRAME tSHARE tCOND tDISPLAY tUNDISPLAY tDISASSEMBLE
...
...
@@ -124,9 +122,6 @@ command:
| tABORT tEOL { abort(); }
| tMODE tNUM tEOL { mode_command($2); }
| tMODE tVM86 tEOL { DEBUG_CurrThread->dbg_mode = MODE_VM86; }
| tENABLE tNUM tEOL { DEBUG_EnableBreakpoint( $2, TRUE ); }
| tDISABLE tNUM tEOL { DEBUG_EnableBreakpoint( $2, FALSE ); }
| tDELETE tBREAK tNUM tEOL { DEBUG_DelBreakpoint( $3 ); }
| tBACKTRACE tEOL { DEBUG_BackTrace(DEBUG_CurrTid, TRUE); }
| tBACKTRACE tNUM tEOL { DEBUG_BackTrace($2, TRUE); }
| tUP tEOL { DEBUG_SetFrame( curr_frame + 1 ); }
...
...
@@ -137,13 +132,6 @@ command:
| tSHOW tDIR tEOL { DEBUG_ShowDir(); }
| tDIR pathname tEOL { DEBUG_AddPath( $2 ); }
| tDIR tEOL { DEBUG_NukePath(); }
| tDISPLAY tEOL { DEBUG_InfoDisplay(); }
| tDISPLAY expr tEOL { DEBUG_AddDisplay($2, 1, 0); }
| tDISPLAY tFORMAT expr tEOL{ DEBUG_AddDisplay($3, $2 >> 8, $2 & 0xff); }
| tDELETE tDISPLAY tNUM tEOL{ DEBUG_DelDisplay( $3 ); }
| tDELETE tDISPLAY tEOL { DEBUG_DelDisplay( -1 ); }
| tUNDISPLAY tNUM tEOL { DEBUG_DelDisplay( $2 ); }
| tUNDISPLAY tEOL { DEBUG_DelDisplay( -1 ); }
| tCOND tNUM tEOL { DEBUG_AddBPCondition($2, NULL); }
| tCOND tNUM expr tEOL { DEBUG_AddBPCondition($2, $3); }
| tSOURCE pathname tEOL { DEBUG_Parser($2); }
...
...
@@ -157,7 +145,8 @@ command:
| set_command
| x_command
| print_command
| break_command
| break_commands
| display_commands
| watch_command
| info_command
| walk_command
...
...
@@ -165,6 +154,20 @@ command:
| noprocess_state
;
display_commands:
| tDISPLAY tEOL { DEBUG_InfoDisplay(); }
| tDISPLAY expr tEOL { DEBUG_AddDisplay($2, 1, 0, FALSE); }
| tDISPLAY tFORMAT expr tEOL{ DEBUG_AddDisplay($3, $2 >> 8, $2 & 0xff, FALSE); }
| tLOCAL tDISPLAY expr tEOL { DEBUG_AddDisplay($3, 1, 0, TRUE); }
| tLOCAL tDISPLAY tFORMAT expr tEOL { DEBUG_AddDisplay($4, $3 >> 8, $3 & 0xff, TRUE); }
| tENABLE tDISPLAY tNUM tEOL{ DEBUG_EnableDisplay( $3, TRUE ); }
| tDISABLE tDISPLAY tNUM tEOL { DEBUG_EnableDisplay( $3, FALSE ); }
| tDELETE tDISPLAY tNUM tEOL{ DEBUG_DelDisplay( $3 ); }
| tDELETE tDISPLAY tEOL { DEBUG_DelDisplay( -1 ); }
| tUNDISPLAY tNUM tEOL { DEBUG_DelDisplay( $2 ); }
| tUNDISPLAY tEOL { DEBUG_DelDisplay( -1 ); }
;
set_command:
tSET lval_addr '=' expr_value tEOL { DEBUG_WriteMemory(&$2, $4); }
| tSET '+' tIDENTIFIER tEOL { DEBUG_DbgChannel(TRUE, NULL, $3); }
...
...
@@ -210,12 +213,18 @@ print_command:
| tPRINT tFORMAT expr_addr tEOL { DEBUG_Print( &$3, $2 >> 8, $2 & 0xff, 0 ); }
;
break_command:
break_command
s
:
tBREAK '*' expr_addr tEOL{ DEBUG_AddBreakpointFromValue( &$3 ); }
| tBREAK identifier tEOL { DEBUG_AddBreakpointFromId($2, -1); }
| tBREAK identifier ':' tNUM tEOL { DEBUG_AddBreakpointFromId($2, $4); }
| tBREAK tNUM tEOL { DEBUG_AddBreakpointFromLineno($2); }
| tBREAK tEOL { DEBUG_AddBreakpointFromLineno(-1); }
| tENABLE tNUM tEOL { DEBUG_EnableBreakpoint( $2, TRUE ); }
| tENABLE tBREAK tNUM tEOL { DEBUG_EnableBreakpoint( $3, TRUE ); }
| tDISABLE tNUM tEOL { DEBUG_EnableBreakpoint( $2, FALSE ); }
| tDISABLE tBREAK tNUM tEOL { DEBUG_EnableBreakpoint( $3, FALSE ); }
| tDELETE tNUM tEOL { DEBUG_DelBreakpoint( $2 ); }
| tDELETE tBREAK tNUM tEOL { DEBUG_DelBreakpoint( $3 ); }
;
watch_command:
...
...
programs/winedbg/debug.l
View file @
f3ed10a2
...
...
@@ -57,7 +57,8 @@ STRING \"[^\n"]+\"
%s PATH_EXPECTED
%s INFO_CMD
%s HELP_CMD
%s DEL_CMD
%s BD_CMD
%s LOCAL_CMD
%s WALK_CMD
%s SHOW_CMD
%s MODE_CMD
...
...
@@ -105,12 +106,14 @@ STRING \"[^\n"]+\"
<INITIAL>down|dow|do { BEGIN(NOCMD); return tDOWN; }
<INITIAL>frame|fram|fra|fr { BEGIN(NOCMD); return tFRAME; }
<INITIAL>list|lis|li|l { BEGIN(PATH_EXPECTED); return tLIST; }
<INITIAL>enable|enabl|enab|ena { BEGIN(
NO
CMD); return tENABLE;}
<INITIAL>disable|disabl|disab|disa|dis { BEGIN(
NO
CMD); return tDISABLE; }
<INITIAL>enable|enabl|enab|ena { BEGIN(
BD_
CMD); return tENABLE;}
<INITIAL>disable|disabl|disab|disa|dis { BEGIN(
BD_
CMD); return tDISABLE; }
<INITIAL>disassemble|disassembl|disassemb|disassem|disasse|disass|disas { BEGIN(NOCMD); return tDISASSEMBLE; }
<INITIAL,INFO_CMD,DEL_CMD>display|displa|displ|disp { BEGIN(FORMAT_EXPECTED); return tDISPLAY; }
<INITIAL>locally|local { BEGIN(LOCAL_CMD); return tLOCAL; }
<INITIAL,LOCAL_CMD>display|displa|displ|disp { BEGIN(FORMAT_EXPECTED); return tDISPLAY; }
<INFO_CMD,BD_CMD>display|displa|displ|disp|dis|di|d { BEGIN(NOCMD); return tDISPLAY; }
<INITIAL>undisplay|undispla|undispl|undisp|undis|undi|und { BEGIN(NOCMD); return tUNDISPLAY; }
<INITIAL>delete|delet|dele|del { BEGIN(
DEL
_CMD); return tDELETE; }
<INITIAL>delete|delet|dele|del { BEGIN(
BD
_CMD); return tDELETE; }
<INITIAL,NOPROCESS>quit|qui|qu|q { BEGIN(NOCMD); return tQUIT; }
<INITIAL>set|se { BEGIN(NOCMD); return tSET; }
<INITIAL,NOPROCESS>walk|w { BEGIN(WALK_CMD); return tWALK; }
...
...
@@ -137,7 +140,7 @@ STRING \"[^\n"]+\"
<INITIAL,NOPROCESS>source|sourc|sour|src { BEGIN(PATH_EXPECTED); return tSOURCE; }
<INITIAL>symbolfile|symbols|symbol|sf { BEGIN(PATH_EXPECTED); return tSYMBOLFILE; }
<INITIAL,INFO_CMD,
DEL
_CMD>break|brea|bre|br|b { BEGIN(NOCMD); return tBREAK; }
<INITIAL,INFO_CMD,
BD
_CMD>break|brea|bre|br|b { BEGIN(NOCMD); return tBREAK; }
<INITIAL>watch|watc|wat { BEGIN(NOCMD); return tWATCH; }
<INITIAL>whatis|whati|what { BEGIN(NOCMD); return tWHATIS; }
<INITIAL,NOPROCESS>run|ru|r { BEGIN(ASTRING_EXPECTED); return tRUN;}
...
...
programs/winedbg/debugger.h
View file @
f3ed10a2
...
...
@@ -331,9 +331,10 @@ extern int DEBUG_ReadLine(const char* pfx, char* buffer, int size);
/* debugger/display.c */
extern
int
DEBUG_DoDisplay
(
void
);
extern
int
DEBUG_AddDisplay
(
struct
expr
*
exp
,
int
count
,
char
format
);
extern
int
DEBUG_AddDisplay
(
struct
expr
*
exp
,
int
count
,
char
format
,
int
local_frame
);
extern
int
DEBUG_DelDisplay
(
int
displaynum
);
extern
int
DEBUG_InfoDisplay
(
void
);
extern
int
DEBUG_EnableDisplay
(
int
displaynum
,
int
enable
);
/* debugger/expr.c */
extern
void
DEBUG_FreeExprMem
(
void
);
...
...
@@ -389,6 +390,7 @@ extern int DEBUG_SetLocalSymbolType(struct wine_locals * sym,
struct
datatype
*
type
);
extern
BOOL
DEBUG_Normalize
(
struct
name_hash
*
nh
);
void
DEBUG_InfoSymbols
(
const
char
*
str
);
const
char
*
DEBUG_GetSymbolName
(
const
struct
name_hash
*
);
/* debugger/info.c */
extern
void
DEBUG_PrintBasic
(
const
DBG_VALUE
*
value
,
int
count
,
char
format
);
...
...
programs/winedbg/display.c
View file @
f3ed10a2
...
...
@@ -2,6 +2,7 @@
* File display.c - display handling for Wine internal debugger.
*
* Copyright (C) 1997, Eric Youngdale.
* Copyright (C) 2003, Michal Miroslaw
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -27,130 +28,171 @@
#include <stdarg.h>
#define
MAX_DISPLAY 25
#define
DISPTAB_DELTA 8
/* needs to be power of 2, search for MARK to see why :) */
struct
display
{
struct
expr
*
exp
;
int
count
;
char
format
;
struct
display
{
struct
expr
*
exp
;
int
count
;
char
format
;
char
enabled
;
struct
name_hash
*
function_name
;
};
static
struct
display
displaypoints
[
MAX_DISPLAY
];
static
struct
display
*
displaypoints
=
NULL
;
static
unsigned
int
maxdisplays
=
0
,
ndisplays
=
0
;
static
struct
name_hash
*
DEBUG_GetCurrentFrameFunctionName
(
void
)
{
struct
name_hash
*
name
;
unsigned
int
eip
,
ebp
;
if
(
DEBUG_GetCurrentFrame
(
&
name
,
&
eip
,
&
ebp
))
return
name
;
return
NULL
;
}
int
DEBUG_AddDisplay
(
struct
expr
*
exp
,
int
count
,
char
format
,
int
in_frame
)
{
int
i
;
for
(
i
=
0
;
i
<
ndisplays
;
i
++
)
if
(
displaypoints
[
i
].
exp
==
NULL
)
break
;
if
(
i
==
maxdisplays
)
/* no space left - expand */
displaypoints
=
DBG_realloc
(
displaypoints
,
(
maxdisplays
+=
DISPTAB_DELTA
)
*
sizeof
(
*
displaypoints
));
if
(
i
==
ndisplays
)
++
ndisplays
;
displaypoints
[
i
].
exp
=
DEBUG_CloneExpr
(
exp
);
displaypoints
[
i
].
count
=
count
;
displaypoints
[
i
].
format
=
format
;
displaypoints
[
i
].
enabled
=
TRUE
;
displaypoints
[
i
].
function_name
=
(
in_frame
?
DEBUG_GetCurrentFrameFunctionName
()
:
NULL
);
return
TRUE
;
}
int
DEBUG_AddDisplay
(
struct
expr
*
exp
,
int
count
,
char
format
)
int
DEBUG_InfoDisplay
(
void
)
{
int
i
;
/*
* First find a slot where we can store this display.
*/
for
(
i
=
0
;
i
<
MAX_DISPLAY
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
==
NULL
)
{
displaypoints
[
i
].
exp
=
DEBUG_CloneExpr
(
exp
);
displaypoints
[
i
].
count
=
count
;
displaypoints
[
i
].
format
=
format
;
break
;
int
i
;
for
(
i
=
0
;
i
<
ndisplays
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
==
NULL
)
continue
;
if
(
displaypoints
[
i
].
function_name
)
DEBUG_Printf
(
DBG_CHN_MESG
,
"%d in %s%s : "
,
i
+
1
,
DEBUG_GetSymbolName
(
displaypoints
[
i
].
function_name
),
(
displaypoints
[
i
].
enabled
?
(
displaypoints
[
i
].
function_name
!=
DEBUG_GetCurrentFrameFunctionName
()
?
" (out of scope)"
:
""
)
:
" (disabled)"
)
);
else
DEBUG_Printf
(
DBG_CHN_MESG
,
"%d%s : "
,
i
+
1
,
(
displaypoints
[
i
].
enabled
?
""
:
" (disabled)"
));
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
"
\n
"
);
}
}
return
TRUE
;
return
TRUE
;
}
int
DEBUG_InfoDisplay
(
void
)
void
DEBUG_PrintOneDisplay
(
int
i
)
{
int
i
;
/*
* First find a slot where we can store this display.
*/
for
(
i
=
0
;
i
<
MAX_DISPLAY
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
!=
NULL
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"%d : "
,
i
+
1
);
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
"
\n
"
);
DBG_VALUE
value
;
if
(
displaypoints
[
i
].
enabled
)
{
value
=
DEBUG_EvalExpr
(
displaypoints
[
i
].
exp
);
if
(
value
.
type
==
NULL
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"Unable to evaluate expression "
);
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
"
\n
Disabling display %d ...
\n
"
,
i
+
1
);
displaypoints
[
i
].
enabled
=
FALSE
;
return
;
}
}
DEBUG_Printf
(
DBG_CHN_MESG
,
"%d : "
,
i
+
1
);
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
" = "
);
if
(
!
displaypoints
[
i
].
enabled
)
DEBUG_Printf
(
DBG_CHN_MESG
,
"(disabled)
\n
"
);
else
if
(
displaypoints
[
i
].
format
==
'i'
)
DEBUG_ExamineMemory
(
&
value
,
displaypoints
[
i
].
count
,
displaypoints
[
i
].
format
);
else
DEBUG_Print
(
&
value
,
displaypoints
[
i
].
count
,
displaypoints
[
i
].
format
,
0
);
}
int
DEBUG_DoDisplay
(
void
)
{
int
i
;
struct
name_hash
*
cur_function_name
=
DEBUG_GetCurrentFrameFunctionName
();
for
(
i
=
0
;
i
<
ndisplays
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
==
NULL
||
!
displaypoints
[
i
].
enabled
)
continue
;
if
(
displaypoints
[
i
].
function_name
&&
displaypoints
[
i
].
function_name
!=
cur_function_name
)
continue
;
DEBUG_PrintOneDisplay
(
i
);
}
}
return
TRUE
;
return
TRUE
;
}
int
DEBUG_DoDisplay
(
void
)
int
DEBUG_DelDisplay
(
int
displaynum
)
{
DBG_VALUE
value
;
int
i
;
/*
* First find a slot where we can store this display.
*/
for
(
i
=
0
;
i
<
MAX_DISPLAY
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
!=
NULL
)
{
value
=
DEBUG_EvalExpr
(
displaypoints
[
i
].
exp
);
if
(
value
.
type
==
NULL
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"Unable to evaluate expression "
);
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
"
\n
Disabling...
\n
"
);
DEBUG_DelDisplay
(
i
);
}
else
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"%d : "
,
i
+
1
);
DEBUG_DisplayExpr
(
displaypoints
[
i
].
exp
);
DEBUG_Printf
(
DBG_CHN_MESG
,
" = "
);
if
(
displaypoints
[
i
].
format
==
'i'
)
{
DEBUG_ExamineMemory
(
&
value
,
displaypoints
[
i
].
count
,
displaypoints
[
i
].
format
);
int
i
;
if
(
displaynum
>
ndisplays
||
displaynum
==
0
||
displaynum
<
-
1
||
displaypoints
[
displaynum
-
1
].
exp
==
NULL
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"Invalid display number
\n
"
);
return
TRUE
;
}
if
(
displaynum
==
-
1
)
{
for
(
i
=
0
;
i
<
ndisplays
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
!=
NULL
)
{
DEBUG_FreeExpr
(
displaypoints
[
i
].
exp
);
displaypoints
[
i
].
exp
=
NULL
;
}
}
else
{
DEBUG_Print
(
&
value
,
displaypoints
[
i
].
count
,
displaypoints
[
i
].
format
,
0
);
displaypoints
=
DBG_realloc
(
displaypoints
,
(
maxdisplays
=
DISPTAB_DELTA
)
*
sizeof
(
*
displaypoints
));
ndisplays
=
0
;
}
else
if
(
displaypoints
[
--
displaynum
].
exp
!=
NULL
)
{
DEBUG_FreeExpr
(
displaypoints
[
displaynum
].
exp
);
displaypoints
[
displaynum
].
exp
=
NULL
;
while
(
displaynum
==
ndisplays
-
1
&&
displaypoints
[
displaynum
].
exp
==
NULL
)
--
ndisplays
,
--
displaynum
;
if
(
maxdisplays
-
ndisplays
>=
2
*
DISPTAB_DELTA
)
{
maxdisplays
=
(
ndisplays
+
DISPTAB_DELTA
-
1
)
&
~
(
DISPTAB_DELTA
-
1
);
/* MARK */
displaypoints
=
DBG_realloc
(
displaypoints
,
maxdisplays
*
sizeof
(
*
displaypoints
));
}
}
}
}
return
TRUE
;
return
TRUE
;
}
int
DEBUG_DelDisplay
(
int
displaynum
)
int
DEBUG_EnableDisplay
(
int
displaynum
,
int
enable
)
{
int
i
;
if
(
displaynum
>=
MAX_DISPLAY
||
displaynum
==
0
||
displaynum
<
-
1
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"Invalid display number
\n
"
);
return
TRUE
;
}
if
(
displaynum
==
-
1
)
{
for
(
i
=
0
;
i
<
MAX_DISPLAY
;
i
++
)
{
if
(
displaypoints
[
i
].
exp
!=
NULL
)
{
DEBUG_FreeExpr
(
displaypoints
[
i
].
exp
);
displaypoints
[
i
].
exp
=
NULL
;
}
--
displaynum
;
if
(
displaynum
>=
ndisplays
||
displaynum
<
0
||
displaypoints
[
displaynum
].
exp
==
NULL
)
{
DEBUG_Printf
(
DBG_CHN_MESG
,
"Invalid display number
\n
"
);
return
TRUE
;
}
}
else
if
(
displaypoints
[
displaynum
-
1
].
exp
!=
NULL
)
{
DEBUG_FreeExpr
(
displaypoints
[
displaynum
-
1
].
exp
);
displaypoints
[
displaynum
-
1
].
exp
=
NULL
;
}
return
TRUE
;
displaypoints
[
displaynum
].
enabled
=
enable
;
if
(
!
displaypoints
[
displaynum
].
function_name
||
displaypoints
[
displaynum
].
function_name
==
DEBUG_GetCurrentFrameFunctionName
())
DEBUG_PrintOneDisplay
(
displaynum
)
;
return
TRUE
;
}
programs/winedbg/hash.c
View file @
f3ed10a2
...
...
@@ -1305,6 +1305,11 @@ int DEBUG_SetLocalSymbolType(struct wine_locals * sym, struct datatype * type)
return
TRUE
;
}
const
char
*
DEBUG_GetSymbolName
(
const
struct
name_hash
*
sym
)
{
return
sym
->
name
;
}
#ifdef HAVE_REGEX_H
static
int
cmp_sym_by_name
(
const
void
*
p1
,
const
void
*
p2
)
...
...
programs/winedbg/info.c
View file @
f3ed10a2
...
...
@@ -218,15 +218,16 @@ void DEBUG_Help(void)
" stepi [N] nexti [N]"
,
" x <addr> print <expr>"
,
" display <expr> undisplay <disnum>"
,
" delete display <disnum> pass"
,
" local display <expr> delete display <disnum>"
,
" enable display <disnum> disable display <disnum>"
,
" bt frame <n>"
,
" up down"
,
" list <lines> disassemble [<addr>][,<addr>]"
,
" show dir dir <path>"
,
" set <reg> = <expr> set *<addr> = <expr>"
,
" mode [16,32,vm86]
walk [wnd,class,module,maps,
"
,
" whatis
process,thread,exception]
"
,
" info (see 'help info' for options)"
,
" mode [16,32,vm86]
pass
"
,
" whatis
walk [wnd,class,module,maps,
"
,
" info (see 'help info' for options)
process,thread,exception]
"
,
"The 'x' command accepts repeat counts and formats (including 'i') in the"
,
"same way that gdb does.
\n
"
,
...
...
@@ -234,8 +235,8 @@ void DEBUG_Help(void)
" The following are examples of legal expressions:"
,
" $eax $eax+0x3 0x1000 ($eip + 256) *$eax *($esp + 3)"
,
" Also, a nm format symbol table can be read from a file using the"
,
" symbolfile command. Symbols can also be defined individually with"
,
" the define command."
,
" symbolfile command.
"
,
/*
Symbols can also be defined individually with",
" the define command.",
*/
""
,
NULL
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment