diff options
author | Ray-V <ray-v@inbox.lv> | 2021-06-13 21:47:32 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2021-06-25 10:41:03 +0200 |
commit | ae6f04289851574f38aedbd4666f7154cc67cad3 (patch) | |
tree | c8066d830ea80b8858878fce8e346473f135030c /doc/en | |
parent | c9d8d7c859171b71180fd448aa53dd40e5e40c7e (diff) | |
download | kdbg-ae6f04289851574f38aedbd4666f7154cc67cad3.tar.gz kdbg-ae6f04289851574f38aedbd4666f7154cc67cad3.zip |
Remove CMakeLists.txt for doc
Move doc directory up a level from kdbg/doc
Add macro call to source root CMakeLists.txt
Remove tde_conditional_add_subdirectory() macro call for doc
Signed-off-by: Ray-V <ray-v@inbox.lv>
Diffstat (limited to 'doc/en')
-rw-r--r-- | doc/en/argspwdenv.html | 42 | ||||
-rw-r--r-- | doc/en/breakptlist.html | 93 | ||||
-rw-r--r-- | doc/en/globaloptions.html | 78 | ||||
-rw-r--r-- | doc/en/howdoi.html | 76 | ||||
-rw-r--r-- | doc/en/index.html | 185 | ||||
-rw-r--r-- | doc/en/invocation.html | 34 | ||||
-rw-r--r-- | doc/en/localvars.html | 28 | ||||
-rw-r--r-- | doc/en/memory.html | 26 | ||||
-rw-r--r-- | doc/en/pgmoutput.html | 46 | ||||
-rw-r--r-- | doc/en/pgmsettings.html | 81 | ||||
-rw-r--r-- | doc/en/registers.html | 35 | ||||
-rw-r--r-- | doc/en/sourcecode.html | 28 | ||||
-rw-r--r-- | doc/en/stack.html | 23 | ||||
-rw-r--r-- | doc/en/threads.html | 42 | ||||
-rw-r--r-- | doc/en/tips.html | 47 | ||||
-rw-r--r-- | doc/en/types.html | 183 | ||||
-rw-r--r-- | doc/en/watches.html | 28 | ||||
-rw-r--r-- | doc/en/xslt.html | 24 |
18 files changed, 1099 insertions, 0 deletions
diff --git a/doc/en/argspwdenv.html b/doc/en/argspwdenv.html new file mode 100644 index 0000000..22482f0 --- /dev/null +++ b/doc/en/argspwdenv.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Arguments, Environment</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +Specifying program arguments, working directory, environment variables</h1> +<p>Choose <i>Execution|Arguments</i> to open a dialog where you can set program +arguments, the working directory for your program, and environment variables.</p> +<h2><a name="PgmArgs"></a>Tab Arguments</h2> +<p>In the edit box enter the arguments that shall be passed on to your +program. <i>Insert file name</i> lets you browse for a file; +the file name will be <em>inserted</em> in the edit box (at the cursor position).</p> +<p>Next time the program is started, the new arguments will be used.</p> +<h2><a name="WorkingDir"></a>Tab Working Directory</h2> +<p>In the edit box you can specify the working directory for your program. +<i>Browse</i> lets you browse for a directory. +Your program will use the new directory only when it is run the next time.</p> +<p>The working directory also applies to gdb itself! The directory that +you specify will be passed to gdb immediately, i.e. gdb will work with +the new setting as soon as you press <i>OK</i>. This can influence whether +source code files are found.</p> +<h2><a name="Environment"></a>Tab Environment</h2> +<p>In the Environment tab you can set environment variables that the program +sees in addition to those that it inherits. +In the edit box type in an expression of the form <tt>VARIABLE=value</tt> +to set the environment variable <tt>VARIABLE</tt> to the value <tt>value</tt>, +and click <i>Modify</i>. To remove a variable, select it from the list +below and click <i>Delete</i>. To change the value, edit the value in the +edit field and click <i>Modify</i>. If you change the name of the variable +and click <i>Modify</i>, you add a new variable! The new environment variables +will be used by your program the next time it is run.</p> +<h2>Tab xsldbg Settings</h2> +<p>This tab is only available when a <a href="xslt.html">XSLT script is +debugged</a>. Here you can specify various flags that influence the +XSL translation and XSLDBG.</p> +</body> +</html> diff --git a/doc/en/breakptlist.html b/doc/en/breakptlist.html new file mode 100644 index 0000000..fb1c18e --- /dev/null +++ b/doc/en/breakptlist.html @@ -0,0 +1,93 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Breakpoint list</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Breakpoint List</h1> +<p>The breakpoint list displays all breakpoints and watchpoints that are set +and allows you to manipulate them. It can be displayed using <i>View|Breakpoints</i>.</p> +<h2> +The list of breakpoints</h2> +<p>For each breakpoint the following is shown:</p> +<ul> +<li> +the breakpoint location,</li> + +<li> +the hit count,</li> + +<li> +the ignore count if set,</li> + +<li> +the condition if set.</li> +</ul> +<p>The icon in front of the entry indicates whether the breakpoint is enabled +(a red dot) or disabled (a bright red dot), whether the breakpoint is temporary +(a tiny clock is overlaid), whether the breakpoint is conditional (a +tiny question mark is overlaid), or whether the breakpoint is <em>orphaned</em> +(a 'x' is overlaid).</p> +<p>Watchpoints are indicated by an eye glas icon in front of the line.</p> +<h2> +<A name="orphanedbp"></A>Orphaned breakpoints</h2> +<p><em>Orphaned breakpoints</em> are breakpoints that gdb cannot implant +immediately. Orphaned breakpoints occur if you try to set a breakpoint in a file +that is not part of the executable. In particular, this is the case if the file +belongs to a shared library or dynamically loaded module: When the executable +is loaded, gdb does not yet know about dynamic modules and, hence, cannot set +breakpoints there. However, KDbg does not forget about requests to set +breakpoints in dynamic modules: It tries to set orphaned breakpoints each time +that the program stops. When the breakpoint can be set successfully, it turns +into a normal breakpoint.</p> +<p>But there is an important consequence: Orphaned breakpoints are not effective, +and the program will <em>not</em> stop there. The remedy is to set a breakpoint +in the executable at the earliest possible point after which it is known that +the dynamic module is loaded. For shared libraries this is usually in <tt>main()</tt> +and for dynamically loaded modules it is after the call to <tt>dlopen()</tt> +(or equivalent). When the program stops at this breakpoint the orphaned +breakpoints from the dynamic module are set and become effective.</p> +<h2> +Manipulating breakpoints</h2> +<p><a name="StopProg"></a>It is important to note that breakpoints and watchpoints +cannot be manipulated while the program is running. If the program has +already been started, it must stop first - either by hitting a breakpoint +that is already set or forcefully by choosing <i>Execution|Break</i>. Note +that this will not terminate the program, it just interrupts it. You can +now manipulate the breakpoints; then choose <i>Execution|Continue</i> to +let the program continue.</p> +<p>To set a breakpoint on a specific source line, it is easiest to do this +in the source code window. If you don't know the exact file and line number +of a function, you can set the breakpoint by typing the function name in +the edit box above the list and click <i>Add Breakpoint</i>.</p> +<p>You can disable and enable breakpoints by selecting them in the list +and clicking <i>Disable</i> or <i>Enable</i>. Or you simply click on the +breakpoint in the list using the middle mouse button - just like you enable +and disable breakpoints in the source window.</p> +<p>You can set a condition on a breakpoint (so that the program is only +stopped if the condition is true) or set an ignore count (so that the program +is not stopped the next n times that the breakpoint is hit). To do that, +press the <i>Conditional</i> button and enter the condition and/or ignore +count.</p> +<h2> +Manipulating watchpoints</h2> +<p>Watchpoints are a like breakpoints, except that they interrupt the program +when the value of a memory location changes. As with breakpoints, watchpoints +cannot be manipulated while the program is running. See <a href="#StopProg">above</a> +for more information.</p> +<p>To set a watchpoint, type an expression in the edit box above the list, +then click <i>Add Watchpoint</i>. The program will stop when the value +of the expression changes. Note that watchpoints that involve local variables +can only be set when the program is stopped in a breakpoint (or has been +interrupted by <i>Execution|Break</i>).</p> +<p>To remove the watchpoint, select it from the list and click <i>Remove</i>. +If the expression involves a local variable, the watchpoint will be removed +automatically when the program leaves the current frame.</p> +<p>You can set a condition and an ignore count on the watchpoint just like +on breakpoints by selecting it and clicking <i>Conditional</i>.</p> +</body> +</html> diff --git a/doc/en/globaloptions.html b/doc/en/globaloptions.html new file mode 100644 index 0000000..52faaab --- /dev/null +++ b/doc/en/globaloptions.html @@ -0,0 +1,78 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Global Options</title> +</head> +<body text="#000000" bgcolor="#ffffff"> +<p><a href="index.html">Contents</a></p> +<h1> +Global Options Dialog</h1> +<p>To specify some global options, choose <i>Settings|Global Options</i>. You +can set the following:</p> +<ul> +<li> +the command by which gdb is invoked,</li> + +<li> +the command that opens a terminal for the program's output,</li> + +<li> +whether the KDbg shall pop into the foreground when the program stops and +a timeout when it shall go back again,</li> + +<li> +the tab width,</li> + +<li> +filters for source file names.</li> +</ul> + +<h4> +How to invoke gdb</h4> + +<blockquote>If you want to use a different version of gdb, you can specify +it under +<i>How to invoke GDB</i>. The default command is <tt>gdb --fullname +--nx</tt>. Be sure to also specify these options if you change the gdb +executable. If you leave them away, KDbg will not work. If you messed up +the entry, you can clear it to revert to the default setting.</blockquote> + +<h4> +How to invoke a terminal emulator</h4> + +<blockquote>If you want to use a different terminal program to show the +output of the program, specify it under <i>Terminal for program output</i>. +The default setting is <tt>xterm -name kdbgio -title %T -e sh -c %C</tt>. +In this entry, +<tt>%T</tt> will be replaced by a title string, <tt>%C</tt> +will be replaced by a Bourne shell script that loops infinitely so that +the terminal window doesn't close. (No, it doesn't use CPU, it calls <tt>sleep +3600</tt> in a loop :) An alternative for this setting could be <tt>konsole +--name kdbgio --caption %T -e sh -c %C</tt>.</blockquote> + +<h4> +Pop into foreground</h4> + +<blockquote>You can specify whether the KDbg window shall move itself into +the foreground as soon as the program being debugged stops (at a breakpoint +or due to a signal). The KDbg window is not activated, however (at least +under KWM, the KDE window manager). Some users may feel that this behavior +is intrusive, so this option is off by default.</blockquote> + +<blockquote>If this option is on, KDbg will also retreat itself into the +background when the program is continued by any command, but it does so +only after a timeout that can be specified. This avoids that the debugger +window flashes back and forth each time you click any of the <i>Step</i> +commands.</blockquote> + +<h4> +File filters</h4> + +<blockquote>You can specify wildcards for source files and header files, +which are used in the file dialog of the <i>File|Open Source</i> +command.</blockquote> + +</body> +</html> diff --git a/doc/en/howdoi.html b/doc/en/howdoi.html new file mode 100644 index 0000000..6191144 --- /dev/null +++ b/doc/en/howdoi.html @@ -0,0 +1,76 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - How Do I...?</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +How Do I...?</h1> + +<h4> +... set breakpoints?</h4> +<p>There's more than one way to set a breakpoint:</p> +<ul> +<li> +You can set it in the source window by clicking on the "active area" at +the far left of the line.</li> + +<li> +You can set it by selecting the line in the source window and choosing +an option from the <i>Breakpoint</i> menu.</li> + +<li> +You can set it in the <a href="breakptlist.html">breakpoint list</a>.</li> +</ul> +<p>If you can't set breakpoints, maybe the program is currently running. You +can't set breakpoints while the program is running. Stop it first using +<i>Execution|Break</i>. +If you still can't set breakpoints, make sure that you have compiled <em>and +linked</em> your program with debugging information enabled.</p> +<h4> +... display the value of a global variable or an arbitrary expression?</h4> +<p>Use the <A href="watches.html">Watch window</A>.</p> +<h4> +... set watchpoints?</h4> +<p>Watchpoints are manipulated in the <a href="breakptlist.html">breakpoint +list</a>.</p> +<h4> +... use a core dump?</h4> +<p>First load the executable using <i>File|Executable</i>, then specify the +core dump using <i>File|Core dump</i>.</p> +<h4> +... debug a program that's caught in an endless loop?</h4> +<p>Start the program and let it run until it is in the endless loop. Then +switch to KDbg and choose <i>Execution|Break</i>. You've just caught the +nasty program <em>in flagranti</em>!</p> +<h4> +... achieve that the program passes over a breakpoint a number of times +before it stops?</h4> +<p>In the <a href="breakptlist.html">breakpoint list</a> select the breakpoint; +then click <i>Conditional</i> and specify the number of times to skip the +breakpoint in the <i>Ignore count</i> field.</p> +<h4> +... set environment variables for the executable?</h4> +<p>Select <i>Execution|Arguments</i> and specify the environment variables +in the <a href="argspwdenv.html#Environment">program arguments dialog</a>.</p> +<h4> +... set a working directory for the executable?</h4> +<p>Select <i>Execution|Arguments</i> and specify the working directory in +the <a href="argspwdenv.html#WorkingDir">program arguments dialog</a>.</p> +<h4> +... get rid of this terminal window?</h4> +<p>Select <i>Settings|This Program</i> and switch to the <a href="pgmsettings.html#output">Output</a> tab. +Select <i>Only output, simple terminal emulation</i> and click <i>OK</i>. +Now restart the program (choose it from the list under <i>File|Recent Executables</i>). +The program output goes now to the built-in <a href="pgmoutput.html">output +window</a> and stdin is redirected to <tt>/dev/null</tt>.</p> +<p>You must do this for every new program that you debug.</p> +<p><b><i>Important:</i></b> You should not do this if your program expects +input from the terminal (usually stdin) or if its output requires nifty +terminal emulation (more than carriage-return and line-feed). The built-in +output window does not support input and terminal emulation.</p> +</body> +</html> diff --git a/doc/en/index.html b/doc/en/index.html new file mode 100644 index 0000000..454cd08 --- /dev/null +++ b/doc/en/index.html @@ -0,0 +1,185 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> + +<h1> +KDbg - User's Manual</h1> + +<h2> +Contents</h2> + +<ul> +<li> +<a href="#Introduction">Introduction</a></li> + +<li> +<a href="#UsingKDbg">Using KDbg</a></li> + +<li> +<a href="#InfoWindows">KDbg's information windows</a></li> + +<li> +<a href="#Tips">Tips and such</a></li> + +<li> +Advanced topic: <a href="types.html">Type tables</a></li> + +<li> +<a href="invocation.html">How to invoke KDbg from the command line</a></li> + +<li> +<a href="#Author">Author</a></li> +</ul> + +<hr> +<h2> +<a name="Introduction"></a>Introduction</h2> +<p>KDbg is a front-end for <tt>gdb</tt>, the GNU debugger.</p> +<p>This means that KDbg itself is not the debugger. Rather, it communicates +with <tt>gdb</tt>, a command line debugger, by sending commands to it and +receiving the output, such as variable values. The menu commands and mouse +clicks are translated into <tt>gdb</tt> commands, and the output of <tt>gdb</tt> +is translated into (more or less) visible information, such as structured +variable contents.</p> +<p>The upshot of all this is that KDbg completely relies on the capabilities +of the underlying command line debugger, <tt>gdb</tt>. KDbg can do no more +than <tt>gdb</tt> can. For example, if you have a <tt>gdb</tt> that does +not supports debugging of threaded programs, KDbg cannot, either (even +though it offers a threads window).</p> +<h2> +<a name="UsingKDbg"></a>Using KDbg</h2> +<p>Before you start using KDbg, you may want to review the options in the +<a href="globaloptions.html">Global Options</a> dialog that you invoke +with <i>Settings|Global Options</i>.</p> +<h4> +Specifying a debugging target</h4> +<p>To debug a program, choose <i>File|Executable</i> from the menu. If you +have debugged the program earlier, you can choose it from <i>File|Recent +Executables</i>. The program is loaded.</p> +<p>If you want to debug a core dump, you must first load the executable +that produced the core dump, then choose +<i>File|Core Dump</i> from the +menu. Now KDbg goes to the point in the program that caused the core dump.</p> +<p>You can now set breakpoints, using the <i>Breakpoint</i> menu, the right +mouse button menu, or the <a href="breakptlist.html">breakpoint window</a>.</p> +<p>You can also choose program specific settings that apply only to the +currently loaded executable using <i>Settings|This Program</i>, in the +<a href="pgmsettings.html">Program Settings</a> dialog.</p> +<p>Furthermore, it is possible to <a href="xslt.html">debug XSLT scripts</a>.</p> +<h4> +Running the program</h4> +<p>Now run the program by selecting <i>Execution|Run</i>. The program now +executes as usual until it either exits, hits a breakpoint or watchpoint, +or receives a signal.</p> +<p>You can run the program with arguments, set a working directory, or +set environment variables. To do this, choose <i>Execution|Arguments</i> +and specify your options in the <a href="argspwdenv.html">Program Arguments</a> +dialog (before you start the program).</p> +<p>You can also attach to a program that is currently running. To do this, +first load the executable file like above. Then choose <i>Execution|Attach</i>. +From the list processes specify the one you want to attach to +and click <i>OK</i>. The running program is +halted (not terminated), and the current point of execution is displayed +in the source window.</p> +<p><font size="-1">On some systems the list of processes may not be available. +In this case a simple edit box is available where the process number can be +specified.</font></p> +<h4> +The program stopped - now what?</h4> +<p>When the program stops at a breakpoint, watchpoint, or due to a signal, +the <a href="sourcecode.html">source code window</a> displays the line +where the program stopped. It is very common that the program stops due +to a signal (usually a <tt>SIGSEGV</tt>, segmentation violation) in a function +that is not part of the program, that you have written. In this case you +investigate the <a href="stack.html">stack window</a> and look for a function +that you have written (start at the top of the list) and click on it. This +will bring you to a location that you can start your search for the real +bug.</p> +<p>In the menu <i>Execution</i> you find the commands that you need to +run +the program, step through code, and to interrupt the program (<i>Break</i>) +while it is running. The important commands (<i>Run</i> and all kinds of +<i>Step</i>) are bound to function keys. For efficient debugging it is +strongly recommend that you get used to using them. You can use +<i>Settings|Configure Shortcuts</i> if you want to bind the functions +to different keys.</p> +<p>In the menu <i>Breakpoint</i> you find commands to set, clear, disable, +and enable permanent and temporary breakpoints. You can display a list +of breakpoints in the <a href="breakptlist.html">breakpoints window</a>. +You can also set a breakpoint by clicking at the left end of the source +line (using the left mouse button), and you can enable and disable a breakpoint +by clicking it using the middle mouse button.</p> +<p>The animation in the toolbar indicates whether the program +is running. It stops when the program stopped in a breakpoint or for +some other reason or when the program exited. This animated button is a shortcut +for <i>Execution|Break</i>.</p> +<h2> +<a name="InfoWindows"></a>KDbg's information windows</h2> +<p>KDbg displays information and accepts commands in number of different windows. +In the menu <i>View</i> you find commands to show and hide these windows. +They are docking windows, which means that you can drag them around and +arrange them in any manner you like.</p> +<ul> +<li> +<a href="sourcecode.html">The source code window</a></li> + +<li> +<a href="localvars.html">The local variables window</a></li> + +<li> +<a href="stack.html">The stack window</a></li> + +<li> +<a href="watches.html">The watched expressions window</a></li> + +<li> +<a href="breakptlist.html">The breakpoint list</a></li> + +<li> +<a href="pgmoutput.html">The output window</a></li> + +<li> +<a href="registers.html">The register dump window</a></li> + +<li> +<a href="memory.html">The memory dump window</a></li> + +<li> +<a href="threads.html">The threads window</a></li> +</ul> + +<h2> +<a name="Tips"></a>Tips and such</h2> +<p>The following topics give some useful hints on using KDbg.</p> +<ul> +<li> +<a href="tips.html">Tips and Tricks</a></li> + +<li> +<a href="howdoi.html">How do I...?</a></li> +</ul> + +<h2> +<a name="Author"></a>Author</h2> +<p>KDbg is written by <a href="mailto:j6t@kdbg.org">Johannes Sixt</a> +with contributions from these people (in no particular order):</p> +<ul> +<li>Keith Isdale</li> +<li>Ben Burton</li> +<li>Daniel Thor Kristjansson</li> +<li>Matthew Allen</li> +<li>Ron Lerech</li> +<li>Neil Butterworth</li> +<li>Thomas Sparr</li> +<li>Max Judin</li> +<li>Johnny Chan</li> +<li>Ilmar S. Habibulin</li> +</ul> +<p>KDbg homepage is at <a href="http://www.kdbg.org/">http://www.kdbg.org/</a>.</p> +</body> +</html> diff --git a/doc/en/invocation.html b/doc/en/invocation.html new file mode 100644 index 0000000..2f99dd0 --- /dev/null +++ b/doc/en/invocation.html @@ -0,0 +1,34 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Invocation</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1>Invoking KDbg from the command line</h1> +<p><pre> +Usage: kdbg [TQt-options] [KDE-options] [options] [program] [core] + +Generic options: + --help Show help about options + --help-qt Show TQt specific options + --help-kde Show KDE specific options + --help-all Show all options + --author Show author information + -v, --version Show version information + --license Show license information + -- End of options + +Options: + -t <file> transcript of conversation with the debugger + -r <device> remote debugging via <device> + -l <language> specify language: C, XSLT [] + -p <pid> specify PID of process to debug + +Arguments: + program path of executable to debug + core a core file to use +</pre></p></body> +</html> diff --git a/doc/en/localvars.html b/doc/en/localvars.html new file mode 100644 index 0000000..1461f70 --- /dev/null +++ b/doc/en/localvars.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Local Variables</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Local Variables Window</h1> +<p>The local variables window is opened using <i>View|Locals</i>. The local +variables window displays the contents of the local variables at the currently +selected stack frame.</p> +<p>The set of local variables that are displayed is determined by the stack +frame that is selected in the <A href="stack.html">stack window</A>.</p> +<p>Variable values that changed between stops of the program are displayed +in red color.</p> +<p>The values of most variables can be changed. For this purpose, press F2 +while the input focus is in the window or choose <i>Edit value</i> from the +context menu. Then edit the value and hit Enter. Note that you cannot modify +the strings that <tt>char*</tt> values point to in this way, just the pointer +value.</p> +<p>Using the context menu you can move +the active variable or structure member to the <a href="watches.html">watched +expressions window</a>.</p> +</body> +</html> diff --git a/doc/en/memory.html b/doc/en/memory.html new file mode 100644 index 0000000..75693f9 --- /dev/null +++ b/doc/en/memory.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Memory Dump</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Memory Dump Window</h1> +<p>The memory dump window is displayed using <i>View|Memory</i>. It displays +the contents of the program's memory at arbitrary adresses.</p> +<p>To display memory contents, enter an address in the edit field. The +address need not be given in hexadecimal form - it can be an expression.</p> +<p>You can specifiy a format how the memory contents shall be displayed +by chooseing the appropriate options from the popup menu that you invoke +by clicking the right mouse button.</p> +<p>A number of address expressions are remembered. You can recall such +an expression from the drop-down list. Please note that the address expression +is remembered together with the format.</p> +<p>If you don't need to investigate memory contents, it is recommended +that you clear the expression so that no memory dump is displayed - this +speeds up the debugging process.</p> +</body> +</html> diff --git a/doc/en/pgmoutput.html b/doc/en/pgmoutput.html new file mode 100644 index 0000000..3e18902 --- /dev/null +++ b/doc/en/pgmoutput.html @@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Program Output</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Program Output Window</h1> +<p>The program output window is displayed using <i>View|Output</i>. The output +window captures text that is written to stdout and stderr by the program +being debugged.</p> +<p>The output window does not allow to type input for the program and it +features only minimal terminal emulation: <tt>\n</tt> (line-feed), +<tt>\t</tt> (horizontal tab), and <tt>\r</tt> (carriage-return) +are treated. These capabilities are usually sufficient to debug GUI programs +which only write debugging output to stdout and stderr.</p> +<p>When a program is debugged with KDbg for the first time, the program +output window is <em>not</em> used. The reason for this is that KDbg cannot +know whether the program requires sophisticated terminal emulation or if +it expects input through a terminal. So, a terminal emulator program is +used by default. In order to redirect the output to the output window, +you must do the following:</p> +<ol> +<li> +Open the <a href="pgmsettings.html">Settings dialog</a> by selecting <i>Settings|This Program</i>.</li> + +<li> +Switch to the <i>Output</i> tab.</li> + +<li> +Choose <i>Only output, simple terminal emulation</i> and click <i>OK</i>.</li> + +<li> +Reload the program by selecting it from the list in <i>File|Recent Executables</i>.</li> +</ol> +<p>You can clear the contents of the output window by selecting <i>Clear</i> +from the popup menu that appears when you click the right mouse button.</p> +<p>If the last line of the output is visible, the window always scrolls +automatically so that the last line remains visible when new output arrives. +If, however, you manually scroll up so that the last line is not visible, +the visible portion of text will not change.</p> +</body> +</html> diff --git a/doc/en/pgmsettings.html b/doc/en/pgmsettings.html new file mode 100644 index 0000000..64225fb --- /dev/null +++ b/doc/en/pgmsettings.html @@ -0,0 +1,81 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Program Settings</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Program Settings Dialog</h1> +<p>In this dialog, program specific settings can be selected. It is invoked +by <i>Settings|This Program</i>. The settings apply only to the currently loaded +executable and will be saved across sessions.</p> +<blockquote><b><i>Important note:</i></b> The chosen settings will only +apply the next time the executable is loaded into KDbg. This means that +after pressing +<i>OK</i> in this dialog, you must reload the executable +using <i>File|Recent Executables</i>!!</blockquote> + +<ul> +<li> +<a href="#driver">Debugger</a></li> + +<li> +<a href="#output">Output</a></li> +</ul> + +<h2> +<a name="driver"></a>Debugger</h2> +<p>In this section, the debugger to be used for the program can be chosen.</p> +<h4> +How to invoke GDB</h4> + +<blockquote>Enter the command to invoke gdb. Leave this field empty to +use the default gdb command as specified in the <a href="globaloptions.html">global +options</a>. When you are cross-compiling and remote-debugging, you will +probably want to use a different gdb suitable for the target platform. +The default command is <tt>gdb --fullname --nx</tt>. Be sure to specify +at least <tt>--fullname</tt> if you change the gdb command. +If you remove this command switch, KDbg will not work. +</blockquote> + +<h2> +<a name="output"></a>Output</h2> +<p>In this section, the terminal emulation under which the program will run +can be selected.</p> +<h4> +No input and output</h4> + +<blockquote>Check this option if your program does not receive input from +the terminal and you do not want to see the output that the program writes +to <tt>stdout</tt> and <tt>stderr</tt> (if any). All three standard channels +(<tt>stdin</tt>, <tt>stdout</tt>, and <tt>stderr</tt>) are effectively +redirected to <tt>/dev/null</tt>.</blockquote> + +<h4> +Only output, simple terminal emulation</h4> + +<blockquote>Check this option if your program does not receive input from +the terminal (<tt>stdin</tt> will be redirected to <tt>/dev/null</tt>), +and the output that it writes to <tt>stdout</tt> and <tt>stderr</tt> does +not require sophisticated terminal emulation. The output will be shown +in the <a href="pgmoutput.html">Output window</a>. +<br><i>Important:</i> The integrated terminal emulator will only interpret +the line-feed character <tt>\n</tt> (ASCII 10) to break lines. It will +<em>not</em> +handle the carriage-return character <tt>\r</tt> (ASCII 13). This is sufficient +for displaying plain debugging output that is often used by developers +of GUI programs.</blockquote> + +<h4> +Full terminal emulation</h4> + +<blockquote>Check this option if your program reads input from <tt>stdin</tt> +or if the output to <tt>stdout</tt> or <tt>stderr</tt> requires terminal +emulation. A terminal emulator will be invoked as specified in the <a href="globaloptions.html">global +options</a>.</blockquote> + +</body> +</html> diff --git a/doc/en/registers.html b/doc/en/registers.html new file mode 100644 index 0000000..fc9fb5b --- /dev/null +++ b/doc/en/registers.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Register Dump</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Register Dump Window</h1> +<p>Whenever the program stops, KDbg displays the contents of the CPU registers +in the register dump window. To display this window, choose <i>View|Registers</i>.</p> +<p>The registers are grouped by the kind of register. The window contains 3 columns:</p> +<ol> +<li> +The column <i>Register</i> displays the register name.</li> + +<li> +The column <i>Value</i> displays the contents of the registers in a more +or less raw form. The raw form is usually displayed as hexadecimal numbers, +even the contents of floating point registers.</li> + +<li> +The column <i>Decoded value</i> displays the contents of the registers +in a decoded form. For arithmetic registers this is generally a signed +decimal value, floating point registers are displayed as floating point +numbers, the flag registers are sometimes decoded into named flags.</li> +</ol> +<p>By clicking the right mouse button a context menu is popped up which lets +you select how the value in the third column is displayed. +You can change the type to use for all registers of a group at once if you +choose the format for the group header.</p> +</body> +</html> diff --git a/doc/en/sourcecode.html b/doc/en/sourcecode.html new file mode 100644 index 0000000..9d1bb7f --- /dev/null +++ b/doc/en/sourcecode.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Source Code</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Source Code Window</h1> +<p>The source code window is the main window and is always visible.</p> +<p>The source code window displays program source code. At the left of +each source line is an "active area". It displays a pointer to indicate +which source line the program currently executes, and it indicates on which +source lines breakpoints have been set.</p> +<p>New breakpoints can be set by clicking into the active area with the +left mouse button. An existing breakpoint can be enabled and disabled by +clicking with the middle mouse button.</p> +<p>The tiny plus '+' between the "active area" and the source line can +be clicked on. If you do so, the source line's assembler code will be displayed. +The plus turns into a minus '-', which, if clicked, will hide the disassembled +code.</p> +<p>Mostly, source code windows are opened automatically. To open a new +source file manually, click the right mouse button and choose <i>Open Source</i> +or choose <i>File|Open Source</i>.</p> +</body> +</html> diff --git a/doc/en/stack.html b/doc/en/stack.html new file mode 100644 index 0000000..0db570b --- /dev/null +++ b/doc/en/stack.html @@ -0,0 +1,23 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Stack</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Stack Window</h1> +<p>The stack window is displayed using <i>View|Stack</i>. The stack window +lists the stack frames, i.e. the functions that the program has entered, +but not yet left.</p> +<p>The innermost frame (where the program currently executes) is shown +at the top.</p> +<p>To switch to a different stack frame, simply click on that stack frame. +The <a href="sourcecode.html">source window</a> displays the source line +where the function invocation took place and the <a href="localvars.html">local +variables window</a> and the <a href="watches.html">watch window</a> change +to reflect the local variables of the selected stack frame.</p> +</body> +</html> diff --git a/doc/en/threads.html b/doc/en/threads.html new file mode 100644 index 0000000..3f0d7fb --- /dev/null +++ b/doc/en/threads.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Threads</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Threads Window</h1> +<p>The threads window is displayed using <i>View|Threads</i>. The threads +window lists the active threads of the program.</p> +<p><b><i>Note:</i></b> Debugging threaded programs must be supported by +the version of gdb that is used - it is not a feature of KDbg. For Linux +systems this works best with gdb5 and later. However, at the time of this writing gdb +still poorly supports threads on NPTL- (New Posix Threads Library) enabled +systems (glibc 2.3.x and kernel 2.6.x).</p> +<p>The contents of the threads window are updated every time the program +is stopped by the debugger. (That is, the window does <em>not</em> reflect +the state while the program is running.)</p> +<p>The first column shows the thread ID, the second column identifies the +location where the thread currently executes.</p> +<p>The marker in front of the line tells which thread currently is <em>active</em>:</p> +<ul> +<li> +The <a href="stack.html">stack window</a> displays the active threads's +backtrace.</li> + +<li> +The <a href="localvars.html">local variables</a> window displays the active +thread's local variables.</li> + +<li> +The <a href="watches.html">watch window</a> uses the active thread's local +variables to evaluate the expressions.</li> +</ul> +<p>By clicking a listed thread, the active thread is switched, and the corresponding +windows are updated. In particular, the <a href="sourcecode.html">source +window</a> displays the location where the active thread is currently halted.</p> +</body> +</html> diff --git a/doc/en/tips.html b/doc/en/tips.html new file mode 100644 index 0000000..6a0292a --- /dev/null +++ b/doc/en/tips.html @@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Tips and Tricks</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +Tips and Tricks</h1> + +<ul> +<li> +You can use breakpoints as bookmarks: Just set a breakpoint and disable +it. Later, you can quickly come back to that breakpoint by double-clicking +it in the breakpoint list (or select it and click <i>View Code</i>). Since +breakpoints are persistent (i.e. KDbg remembers them across invocations +of a program), you get them back next time you invoke KDbg for that particular +program.</li> + +<li> +You can display a value in the watch section in different ways by prepending +gdb's format specifiers in front of the variable to display. E.g. <tt>/x +var.member</tt> displays the <tt>var.member</tt> in hexadecimal notation.</li> + +<li> +You can set breakpoints in a source files that belong to a shared library. +Such breakpoints will be marked as <em>orphaned</em> if the program is not active. +<A href="breakptlist.html#orphanedbp">Orphaned breakpoints</A> are not effective. +In order to make them effective, the program must stop at a time when the shared +library is loaded. For this it is usually sufficient to set a breakpoint in +<tt>main()</tt>. At the time when this breakpoint is hit, the orphaned breakpoints +in the shared library become effective.</li> + +<li> +Debugging multi-threaded programs on NPTL-enabled Linux systems (kernel 2.6.x +or later and glibc 2.3.x or later) may sometimes fails; gdb stops the program +at unexpected instances. In this case the following may help (using bash): +<pre> +LD_ASSUME_KERNEL=2.4.19 kdbg myprogram +</pre>I.e. you run KDbg from the command line such that the old +Linuxthreads implementation is used.</li> +</ul> + +</body> +</html> diff --git a/doc/en/types.html b/doc/en/types.html new file mode 100644 index 0000000..6f233a3 --- /dev/null +++ b/doc/en/types.html @@ -0,0 +1,183 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Type Tables</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +KDbg's Type Table</h1> +<p>KDbg can display a short description of structured types, so +that it is not necessary to expand the variable in the <a href="localvars.html">local +variables window</a> or <a href="watches.html">watched expressions window</a>. +The information which member variable is displayed is stored in <em>type +tables</em>. There is generally one type table per shared library.</p> + +<p>KDbg's default type tables are located under <tt>$prefix/share/apps/kdbg/types</tt>. +User defined type tables can be placed in <tt>${TDEHOME}/share/apps/kdbg/types</tt>, where +<tt>${TDEHOME}</tt> is <tt>~/.kde</tt> if it is not a defined environment variable. +The file names end with <tt>.kdbgtt</tt>. Example: The type table for <tt>libtqt.so</tt> +is named <tt>qt.kdbgtt</tt>. +User defined type tables override the type tables provided by the system.</p> +<p>A type table file obeys the regular KDE configuration file syntax. The +file has the following groups:</p> +<ul> +<li> +A group <tt>[Type Table]</tt> which lists the types and information how +the debugger can identify whether the program is linked against the library.</li> + +<li> +A group for each type which has information about how the value of such +a type is displayed by KDbg.</li> +</ul> +<p>In order to determine which type tables apply to the program being debugged +KDbg lists the shared libraries it is linked to. Then it matches the names +against the <tt>ShlibRE</tt> entries of all type tables. Those that match +are used. If a type appears in several type tables, it is unspecified which +one will be used.</p> +<p>KDbg's type recognition only works for libraries that are linked dynamically +to the program being debugged.</p> +<h2> +The <tt>[Type Table]</tt> group</h2> +<p>This group contains the following entries:</p> +<ul> +<li> +<tt>Types1</tt>, <tt>Types2</tt>, etc. These entries name the types, +separated by commas. +Each of the entries can list any number of types. The entries must be numbered +consecutively (KDbg stops reading at the first gap), although an entry may be +empty (i.e. contain no type at all). +Sometimes the order in which the names are listed is important +(see <tt>Alias</tt> types below).</li> + +<li> +<tt>ShlibRE</tt>. KDbg uses this entry to determine if the type table applies +to the program being debugged. For this purpose KDbg determines the shared +libraries to which the program is linked. If any of the libraries matches +this entry, the type table applies. The regular expression is a TQt-regular +expression (the metacharacters <tt>.*?[]^$\</tt> are recognized in the +usual way, but there is no possibility to group characters.)</li> + +<li> +<tt>LibDisplayName</tt>. This entry is used in lists where the available +type tables are listed to identify this type table. + +<br><font size=-1>This is not used currently.</font></li> + +<li> +<tt>EnableBuiltin</tt> lists extensions that must be enabled if this +library is used. Currently, two builtins are supported: +<ul> +<li> +<tt>TQString::Data</tt> is used to display unicode strings of TQt's <tt>TQString</tt> +class. See below.</li> +<li><tt>TQCharIsShort</tt> is used only in connection with <tt>TQString::Data</tt> +to specify that a unicode character is stored in an object of type <tt>short</tt>. +See <tt>qt3.kdbgtt</tt> for examples.</li></ul></li> +</ul> + +<p>In the case of regular types the names of types should follow the output of the +<tt>whatis</tt> gdb command less any <tt>const</tt>, <i>spaces</i>, or trailing +<tt>&</tt>. +If the type contains a a comma in its name, it must be escaped with a backslash. +But note that the comma should not be escaped in the type's group (which is described +in the next section). +</p> +<p>In the case of template types the name can be arbitrary because the type's group +will mention the template name and a type parameter list.</p> + +<h2> +The type's group</h2> +<p>There is one group for each type that is named exactly as the type. <font size=-1>At +the moment C++ template classes are not supported.</font> Each group contains +the following entries:</p> +<ul> +<li>An optional <tt>Template</tt> entry that specifies the exact template type +name as it is reported by gdb's <tt>whatis</tt> command. However, it is +possible to replace template parameter types at the top-most level by an +asterisk <tt>*</tt>, which acts as a wildcard: It matches <b>one</b> +template type argument that is reported by <tt>whatis</tt> (except that an +asterisk in the last position matches all remaining template type arguments). +</li> +<li> +<tt>Display</tt> determines how the value of the type is displayed by KDbg. +The string must contain 1 to 5 percent characters '<tt>%</tt>'. These are +replaced by the results of the expressions printed by the <tt>Expr</tt><i>x</i> +entries.</li> + +<li> +One or more of <tt>Expr1</tt>, <tt>Expr2</tt>, etc. Each of them must contain +one or more <tt>%s</tt> sequence, which will be replaced by the expression +whose value is investigated. The so constructed expression is submitted +to gdb, and the result substituted back for the corresponding percent character +in the <tt>Display</tt> string.</li> + +<li> +An optional <tt>FunctionGuard</tt><i>x</i> that is associated with the corresponding <tt>Expr</tt><i>x</i>. +If the evaluation of the resulting gdb expression returns an error, the corresponding expression from <tt>Expr</tt><i>x</i> is not evaluated. (This is used to guard function calls.) +<li> +<tt>Alias</tt> names an alias type. If this entry is present, the type +is treated like the specified type. That alias type must appear before +this type in the <tt>Types</tt><i>x</i> entries in the <tt>Type Table</tt>.</li> +</ul> +<p><font size=-1>Currently the number of expressions per type is limited to +5. This can easily be changed if it's too restrictive, but I recommend +not to go to that limit at all - it will slow down the debugging process.</font></p> +<p>KDbg recognizes a special extension that is used to display TQt 2.x's and TQt 3.x's +unicode strings: If an <tt>Expr</tt><i>x</i> is prepended with <tt>/TQString::Data</tt>, +it is assumed that the result of the expression is a pointer to a <tt>TQString::Data</tt>. +The value displayed is the unicode string that this instance of <tt>TQString::Data</tt> +represents (which can be <tt>TQString::null</tt> if it is TQt's well-defined +null string or <tt>(null)</tt> if the <tt>unicode</tt> member is the null +pointer). See <tt>qt2.kdbgtt</tt> for examples.</p> +<p>Tip: It is not necessary to define derived types if they ought to be +treated the same as the base class - KDbg can deduce derived types and +uses the type specification of the (leftmost) base class. You can use the +<tt>Alias</tt> +entry to quickly specify that a type should be treated like a non-leftmost +base class for a multiple-inheritance class.</p> +<h2> +An example</h2> +<p>The example shows how <tt>TQString</tt> and <tt>TQRect</tt> are defined +in <tt>qt3.kdbgtt</tt>. Furthermore, the template type <tt>TQValueVector</tt> +is defined. This example applies to TQt 3.x, which is located in shared library +whose name ends in <tt>libtqt-mt.so.3</tt>.</p> +<pre>[Type Table] +Types1=TQString,TQRect +Types2=TQValueVector +LibDisplayName=libtqt 3.x +ShlibRE=libtqt-mt\.so\.3$ +EnableBuiltin=TQString::Data,TQCharIsShort + +[TQString] +Display={ % } +Expr1=/TQString::Data (%s).d + +[TQValueVector] +Template=TQValueVector<*> +Display={ size=% shared=% capacity=% } +Expr1=($tmp=(%s).sh)->finish-$tmp->start +Expr2=(%s).sh->count +Expr3=($tmp=(%s).sh)->end-$tmp->start + +[TQRect] +Display={ tl=(%,%) br=(%,%) } +Expr1=(%s).x1 +Expr2=(%s).y1 +Expr3=(%s).x2 +Expr4=(%s).y2</pre> +<p>This example shows these features:</p> +<ul> +<li>The name of the template type, <tt>TQValueVector</tt> is irrelevant. +The exact type name is specified under the <tt>Template=</tt> entry. +It specifies a single wildcard so that it applies to all specializations. +</li> +<li>In order to evaluate the expression that was supplied in the <tt>%s</tt> +only once, the result is stored in a temporary gdb variable and reused later in +the same expression.</li> +<li>Note that it is safer to wrap the <tt>%s</tt> in parentheses.</li> +</ul> +</body> +</html> diff --git a/doc/en/watches.html b/doc/en/watches.html new file mode 100644 index 0000000..395cc61 --- /dev/null +++ b/doc/en/watches.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Watched Expressions</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Watched Expressions Window</h1> +<p>The watched expressions window is opened using <i>View|Watched Expressions</i>. +It displays arbitrary expressions.</p> +<p>To add an expression, type it into the edit field and press Enter or +click <i>Add</i>. To remove an expression, click on it (choose the root +of the expression) and click <i>Del</i>.</p> +<p>You can also move a variable or structure member from the <a href="localvars.html">local +variables window</a> to this window using the context menu in the local +variables window.</p> +<p>The values of most expressions can be changed. For this purpose, press F2 +while the input focus is in the window. Then edit the value and hit Enter. +Note that you cannot modify the strings that <tt>char*</tt> values point +to in this way, just the pointer value.</p> +<p>Watched expressions are stored across debugging sessions. It is recommended +that you remove expressions that your don't need any longer because that +speeds up the debugging process.</p> +</body> +</html> diff --git a/doc/en/xslt.html b/doc/en/xslt.html new file mode 100644 index 0000000..fdc5ec3 --- /dev/null +++ b/doc/en/xslt.html @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Debugging XSLT scripts</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1>Debugging XSLT scripts</h1> +<p>KDbg allows to debug XSLT (XML stylesheet translation) scripts using +<a href="http://xsldbg.sourceforge.net/">xsldbg</a>, which must be available +on your system.</p> +<h2>Specifying the script and an XML file to transform</h2> +<p>XSLT mode is automatically entered if a "program" is loaded +that has a file name that ends in <tt>.xsl</tt>. In addition, the +<A href="invocation.html">command line option</A> <tt>-l XSL</tt> can be +specified to explicitly choose this mode.</p> +<p>To debug an XSLT script it is necessary to specify an XML data file +that the script can transform. This is done in the +<a href="argspwdenv.html">Program Arguments</a> dialog, where the XML +file is specified in the <em>Program Arguments</em> edit box.</p> +</body> +</html> |