2021-04-09 22:33:19 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" >
< meta name = "robots" content = "index,nofollow" >
< title > Debugging - Quake 4 SDK Documentation< / title >
2021-04-10 13:18:07 +00:00
< script type = "text/javascript" src = "wiki/common/js/common.js" > < / script >
2021-04-09 22:33:19 +00:00
< script type = "text/javascript" >
<!-- // common functions
// We keep here the state of the search box
searchIsDisabled = false;
function searchChange(e) {
// Update search buttons status according to search box content.
// Ignore empty or whitespace search term.
var value = e.value.replace(/\s+/, '');
if (value == '' || searchIsDisabled) {
searchSetDisabled(true);
} else {
searchSetDisabled(false);
}
}
function searchSetDisabled(flag) {
// Enable or disable search
document.getElementById('fullsearch').disabled = flag;
document.getElementById('titlesearch').disabled = flag;
}
function searchFocus(e) {
// Update search input content on focus
if (e.value == 'Search') {
e.value = '';
e.className = '';
searchIsDisabled = false;
}
}
function searchBlur(e) {
// Update search input content on blur
if (e.value == '') {
e.value = 'Search';
e.className = 'disabled';
searchIsDisabled = true;
}
}
function actionsMenuInit(title) {
// Initialize action menu
for (i = 0; i < document.forms.length ; i + + ) {
var form = document.forms[i];
if (form.className == 'actionsmenu') {
// Check if this form needs update
var div = form.getElementsByTagName('div')[0];
var label = div.getElementsByTagName('label')[0];
if (label) {
// This is the first time: remove label and do buton.
div.removeChild(label);
var dobutton = div.getElementsByTagName('input')[0];
div.removeChild(dobutton);
// and add menu title
var select = div.getElementsByTagName('select')[0];
var item = document.createElement('option');
item.appendChild(document.createTextNode(title));
item.value = 'show';
select.insertBefore(item, select.options[0]);
select.selectedIndex = 0;
}
}
}
}
//-->
< / script >
2021-04-10 13:18:07 +00:00
< link rel = "stylesheet" type = "text/css" charset = "utf-8" media = "all" href = "wiki/modern/css/common.css" >
< link rel = "stylesheet" type = "text/css" charset = "utf-8" media = "screen" href = "wiki/modern/css/screen.css" >
< link rel = "stylesheet" type = "text/css" charset = "utf-8" media = "print" href = "wiki/modern/css/print.css" >
< link rel = "stylesheet" type = "text/css" charset = "utf-8" media = "projection" href = "wiki/modern/css/projection.css" >
2021-04-09 22:33:19 +00:00
<!-- css only for MSIE browsers -->
<!-- [if IE]>
2021-04-10 13:18:07 +00:00
< link rel = "stylesheet" type = "text/css" charset = "utf-8" media = "all" href = "wiki/modern/css/msie.css" >
2021-04-09 22:33:19 +00:00
<![endif]-->
2021-04-10 14:00:23 +00:00
< link rel = "Start" href = "./Quake4SDK.html" >
2021-04-10 13:40:18 +00:00
< link rel = "Alternate" title = "Wiki Markup" href = "./Debugging?action=raw" >
< link rel = "Alternate" media = "print" title = "Print View" href = "./Debugging?action=print" >
2021-04-10 14:00:23 +00:00
< link rel = "Search" href = "./FindPage.html" >
< link rel = "Index" href = "./TitleIndex.html" >
< link rel = "Glossary" href = "./WordIndex.html" >
< link rel = "Help" href = "./HelpOnFormatting.html" >
2021-04-09 22:33:19 +00:00
< / head >
< body lang = "en" dir = "ltr" >
< div id = "header" >
2021-04-10 14:00:23 +00:00
< div id = "logo" > < a href = "./Quake4SDK.html" > < img src = "wiki/common/moinmoin.png" alt = "MoinMoin Logo" > < / a > < / div >
2021-04-09 22:33:19 +00:00
< form id = "searchform" method = "get" action = "" >
< div >
< input type = "hidden" name = "action" value = "fullsearch" >
< input type = "hidden" name = "context" value = "180" >
< label for = "searchinput" > Search:< / label >
< input id = "searchinput" type = "text" name = "value" value = "" size = "20"
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
< input id = "titlesearch" name = "titlesearch" type = "submit"
value="Titles" alt="Search Titles">
< input id = "fullsearch" name = "fullsearch" type = "submit"
value="Text" alt="Search Full Text">
< / div >
< / form >
< script type = "text/javascript" >
<!-- // Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
< / script >
2021-04-10 13:40:18 +00:00
< ul id = "username" > < li > < a href = "./Debugging?action=login" id = "login" > Login< / a > < / li > < / ul >
2021-04-09 22:33:19 +00:00
< div id = "locationline" >
< ul id = "pagelocation" >
2021-04-10 13:40:18 +00:00
< li > < a class = "backlink" title = "Click to do a full-text search for this title" href = "./Debugging?action=fullsearch&value=linkto%3A%22Debugging%22&context=180" > Debugging< / a > < / li >
2021-04-09 22:33:19 +00:00
< / ul >
< / div >
< ul id = "navibar" >
2021-04-10 14:00:23 +00:00
< li class = "wikilink" > < a href = "./GettingStarted.html" > GettingStarted< / a > < / li > < li class = "wikilink" > < a href = "./ScriptFile.html" > ScriptFile< / a > < / li > < li class = "wikilink" > < a href = "./MakeAMod.html" > MakeAMod< / a > < / li > < li class = "wikilink" > < a href = "./LevelEditor.html" > LevelEditor< / a > < / li > < li class = "wikilink" > < a href = "./FXEditor.html" > FXEditor< / a > < / li > < li class = "wikilink" > < a href = "./GUIEditor.html" > GUIEditor< / a > < / li > < li class = "wikilink" > < a href = "./Sounds.html" > Sounds< / a > < / li > < li class = "wikilink" > < a href = "./Animations.html" > Animations< / a > < / li > < li class = "wikilink" > < a href = "./ArtReference.html" > ArtReference< / a > < / li > < li class = "wikilink" > < a href = "./DownloadableContent.html" > DownloadableContent< / a > < / li > < li class = "wikilink" > < a href = "./RecentChanges.html" > RecentChanges< / a > < / li > < li class = "wikilink" > < a href = "./FindPage.html" > FindPage< / a > < / li > < li class = "wikilink" > < a href = "./HelpContents.html" > HelpContents< / a > < / li > < li class = "current" > < a href = "./Debugging.html" > Debugging< / a > < / li >
2021-04-09 22:33:19 +00:00
< / ul >
< div id = "pageline" > < hr style = "display:none;" > < / div >
2021-04-10 13:40:18 +00:00
< ul class = "editbar" > < li > < span class = "disabled" > Immutable Page< / span > < / li > < li > < a href = "./Debugging?action=info" > Info< / a > < / li > < li > < a href = "./Debugging?action=AttachFile" > Attachments< / a > < / li > < li >
2021-04-09 22:33:19 +00:00
< form class = "actionsmenu" method = "get" action = "" >
< div >
< label > More Actions:< / label >
< select name = "action"
onchange="if ((this.selectedIndex != 0) & &
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
< option value = "raw" > Raw Text< / option >
< option value = "print" > Print View< / option >
< option value = "RenderAsDocbook" > Render as Docbook< / option >
< option value = "refresh" > Delete Cache< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "SpellCheck" > Check Spelling< / option >
< option value = "LikePages" > Like Pages< / option >
< option value = "LocalSiteMap" > Local Site Map< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "RenamePage" disabled class = "disabled" > Rename Page< / option >
< option value = "DeletePage" disabled class = "disabled" > Delete Page< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "MyPages" > My Pages< / option >
< option value = "SubscribeUser" > Subscribe User< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "Despam" > Remove Spam< / option >
< option value = "PackagePages" > Package Pages< / option >
< / select >
< input type = "submit" value = "Do" >
< / div >
< script type = "text/javascript" >
<!-- // Init menu
actionsMenuInit('More Actions:');
//-->
< / script >
< / form >
< / li > < / ul >
< / div >
< div id = "page" lang = "en" dir = "ltr" >
< div dir = "ltr" id = "content" lang = "en" > < span class = "anchor" id = "top" > < / span >
< span class = "anchor" id = "line-1" > < / span > < p class = "line867" >
< h2 id = "head-87570010b169c1df6ef210910c09fd9149b6dc21" > Contents< / h2 >
< span class = "anchor" id = "line-2" > < / span > < ol type = "1" > < li > < p class = "line891" > < a href = "#gamecode" > Debugging Game Code< / a > < span class = "anchor" id = "line-3" > < / span > < span class = "anchor" id = "line-4" > < / span > < / li > < / ol > < p class = "line867" > < span class = "anchor" id = "gamecode" > < / span > < span class = "anchor" id = "line-5" > < / span >
< h3 id = "head-cc7cf73ce2874e17eabbe4ae489cd5a3a94c7338" > Debugging Game Code< / h3 >
2021-04-10 19:17:11 +00:00
< span class = "anchor" id = "line-6" > < / span > < p class = "line874" > If you're working with the game code, you can quickly setup Visual Studio to debug your code as a regular application. There are several ways to do this, here's one of them. < span class = "anchor" id = "line-7" > < / span > < span class = "anchor" id = "line-8" > < / span > < p class = "line867" > < strong > The following assumes you've installed Quake 4 to C:\Quake4, and the SDK to C:\Quake4_SDK< / strong > < span class = "anchor" id = "line-9" > < / span > < span class = "anchor" id = "line-10" > < / span > < ol type = "1" > < li > < p class = "line862" > Right click the < em > Game< / em > project in the Solution Explorer and select Properties. < span class = "anchor" id = "line-11" > < / span > < / li > < li > < p class = "line862" > Setup a post-build step to copy your gamex86.dll to your Quake 4 root directory; you can use the commandline < em > xcopy $(Target< tt class = "backtick" > < / tt > Path) c:\quake4< / em > : < span class = "anchor" id = "line-12" > < / span > < ul > < li style = "list-style-type:none" > < p class = "line891" >
< a class = "attachment" href = "./Debug_post-build.jpg" title = "attachment:post-build.jpg" > Post Build Step Settings< / a >
< span class = "anchor" id = "line-13" > < / span > < / li > < / ul > < / li > < li > < p class = "line862" > Configure your debugging settings. Right click the < em > Game< / em > project in the Solution Explorer, select Properties, then click Debugging < span class = "anchor" id = "line-14" > < / span > < ul > < li > < p class = "line891" > < strong > Command< / strong > : This is the command to run from the debugger. Set it to C:\Quake4\Quake4.exe < span class = "anchor" id = "line-15" > < / span > < / li > < li > < p class = "line891" > < strong > Command Arguments< / strong > : Arguments to pass to the game. Set this to < em > +set si_pure 0< / em > < span class = "anchor" id = "line-16" > < / span > < / li > < li > < p class = "line891" > < strong > Working Directory< / strong > : Specify where the game will be run from. Set this to C:\Quake4 < span class = "anchor" id = "line-17" > < / span > < ul > < li style = "list-style-type:none" > < p class = "line891" >
< a class = "attachment" href = "./Debug_debug-settings.jpg" title = "attachment:debug-settings.jpg" > Debug Settings< / a >
< span class = "anchor" id = "line-18" > < / span > < / li > < / ul > < / li > < / ul > < / li > < li > Re-build your game DLL to make sure the post-build step is performed, and you should be all set hit F5 and start debugging (default settings) < span class = "anchor" id = "line-19" > < / span > < / li > < / ol > < span class = "anchor" id = "bottom" > < / span > < / div > < p id = "pageinfo" class = "info" lang = "en" dir = "ltr" > Debugging (last edited 2005-12-05 20:57:54 by < span title = "DavidDynerman @ 67.129.250.254[67.129.250.254]" > < a class = "nonexistent" href = "./DavidDynerman.html" title = "DavidDynerman @ 67.129.250.254[67.129.250.254]" > DavidDynerman< / a > < / span > )< / p >
2021-04-09 22:33:19 +00:00
< div id = "pagebottom" > < / div >
< / div >
< div id = "footer" >
2021-04-10 13:40:18 +00:00
< ul class = "editbar" > < li > < span class = "disabled" > Immutable Page< / span > < / li > < li > < a href = "./Debugging?action=info" > Info< / a > < / li > < li > < a href = "./Debugging?action=AttachFile" > Attachments< / a > < / li > < li >
2021-04-09 22:33:19 +00:00
< form class = "actionsmenu" method = "get" action = "" >
< div >
< label > More Actions:< / label >
< select name = "action"
onchange="if ((this.selectedIndex != 0) & &
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
< option value = "raw" > Raw Text< / option >
< option value = "print" > Print View< / option >
< option value = "RenderAsDocbook" > Render as Docbook< / option >
< option value = "refresh" > Delete Cache< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "SpellCheck" > Check Spelling< / option >
< option value = "LikePages" > Like Pages< / option >
< option value = "LocalSiteMap" > Local Site Map< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "RenamePage" disabled class = "disabled" > Rename Page< / option >
< option value = "DeletePage" disabled class = "disabled" > Delete Page< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "MyPages" > My Pages< / option >
< option value = "SubscribeUser" > Subscribe User< / option >
< option value = "show" disabled class = "disabled" > ------------< / option >
< option value = "Despam" > Remove Spam< / option >
< option value = "PackagePages" > Package Pages< / option >
< / select >
< input type = "submit" value = "Do" >
< / div >
< script type = "text/javascript" >
<!-- // Init menu
actionsMenuInit('More Actions:');
//-->
< / script >
< / form >
< / li > < / ul >
< ul id = "credits" >
< li > < a href = "http://moinmoin.wikiwikiweb.de/" > MoinMoin Powered< / a > < / li > < li > < a href = "http://www.python.org/" > Python Powered< / a > < / li > < li > < a href = "http://validator.w3.org/check?uri=referer" > Valid HTML 4.01< / a > < / li >
< / ul >
< / div >
< / body >
< / html >