NO

Author Topic: Switch between Release, Debug or Profile build  (Read 22033 times)

Anonymous

  • Guest
Switch between Release, Debug or Profile build
« Reply #15 on: January 28, 2005, 06:06:27 pm »
i had completely rewritten the parser, i have saved all posted prf files and will test them at home. sorry for the problems.  :oops:

Offline Pelle

  • Administrator
  • Member
  • *****
  • Posts: 2029
    • http://www.smorgasbordet.com
Switch between Release, Debug or Profile build
« Reply #16 on: January 28, 2005, 06:54:08 pm »
No problem - you said it was alpha. Looking forward to the next version...  =P~  8-[

Pelle
/Pelle

nitex

  • Guest
Switch between Release, Debug or Profile build
« Reply #17 on: January 29, 2005, 05:37:52 pm »
Here is the fixed version, hopefully no parsing problems anymore. At least all posted profiler logs were correct opened.

Quote
PRF View History

Version 1.0.0.0 Alpha Build 3 (29.01.2005)
  - Fixed: The checks while parsing the *.prf file were changed. The parser now
    looks if it finds the chars -,.: in a line for profiling session date and
    time, or ,:() for function time, number of calls and function name.
  - Fixed: The parser sometimes stripped some chars from the function name.
  - New: Integrated dummy help file.

Version 1.0.0.0 Alpha Build 2 (28.01.2005)
  - Fixed: *.prf files were opened only if they layed in the program directory
    (blame on me)
  - Fixed: The banners in the option and about dialog disappeared sometimes if
    other windows layed over them.
  - Fixed: Layout of banners in dialogs should be correct now with bigger
    windows fonts
  - New: Owner Drawn Buttons with pictures, and option to disable them.
  - New: Parser is completely rewritten.

Version 1.0.0.0 Alpha Build 1 (21.01.2005)
  - First public release

Offline Pelle

  • Administrator
  • Member
  • *****
  • Posts: 2029
    • http://www.smorgasbordet.com
Switch between Release, Debug or Profile build
« Reply #18 on: January 29, 2005, 06:19:36 pm »
Rock 'n' Roll! Well done!  =D>  \:D/

Pelle
/Pelle

TBD

  • Guest
Switch between Release, Debug or Profile build
« Reply #19 on: January 29, 2005, 06:24:15 pm »
nitex: yupeee. now it works perfectly  =D>

maybe you can share with us how to render html pages using IExplore  :lol:

nitex

  • Guest
Switch between Release, Debug or Profile build
« Reply #20 on: January 29, 2005, 06:27:22 pm »
Have a look in the credits, there is a link to an article i used for embedding the Internet Explorer.

Alex

khyron

  • Guest
profiling console based programs
« Reply #21 on: May 23, 2005, 07:59:10 pm »
hi there,

just a little question about the debug, release and profile addin, if I create a new console project and press the prf button i get the following  errors:

POLINK: error: Unresolved external symbol '__imp__MessageBoxA'.
POLINK: error: Unresolved external symbol '__imp__wsprintfA'.
POLINK: fatal error: 2 unresolved external(s).

I usually solve it adding user32.lib in the linker section, is this the correct way of solving it? if it is maybe it could be useful if the addin added that library automatically for console based projects....

nitex

  • Guest
Switch between Release, Debug or Profile build
« Reply #22 on: May 23, 2005, 09:12:18 pm »
This can be easily fixed by modifying the SetLinkerFlags() function.

Change:
Code: [Select]
case ID_PROFILE:
{
lstrcpy(szNew, _T("-debug -debugtype:both profiler.lib"));
break;
}


To:
Code: [Select]
case ID_PROFILE:
{
lstrcpy(szNew, _T("-debug -debugtype:both profiler.lib user32.lib"));
break;
}


And:
Code: [Select]
/* Forget old options */
if (lstrcmp(psz, _T("-release")) == 0 ||
lstrcmp(psz, _T("-debug")) == 0 ||
lstrcmp(psz, _T("-debugtype:both")) == 0 ||
lstrcmp(psz, _T("-debugtype:coff")) == 0 ||
lstrcmp(psz, _T("-debugtype:cv")) == 0 ||
lstrcmp(psz, _T("profiler.lib")) == 0)
continue;


To:
Code: [Select]
/* Forget old options */
if (lstrcmp(psz, _T("-release")) == 0 ||
lstrcmp(psz, _T("-debug")) == 0 ||
lstrcmp(psz, _T("-debugtype:both")) == 0 ||
lstrcmp(psz, _T("-debugtype:coff")) == 0 ||
lstrcmp(psz, _T("-debugtype:cv")) == 0 ||
lstrcmp(psz, _T("profiler.lib")) == 0 ||
lstrcmp(psz, _T("user32.lib")) == 0)
continue;


Alex

khyron

  • Guest
Switch between Release, Debug or Profile build
« Reply #23 on: May 23, 2005, 10:25:08 pm »
hello, thanks for your help and your fast reply!

I patched the code as suggested but I run into a problem, the addin does not work anymore for normal windows apps because it removes user32.lib when your press debug or release...

in the end I just did:

      case ID_PROFILE:
      {
         lstrcpy(szNew, _T("-debug -debugtype:both profiler.lib user32.lib"));
         break;
      }

it works now for both scenarios for me (it leaves user32.lib in the linker for debug and release in console apps but it doesn´t bother me).

nitex

  • Guest
Switch between Release, Debug or Profile build
« Reply #24 on: May 23, 2005, 11:40:38 pm »
Seems i forgot a check, try this one.

Code: [Select]
static BOOL SetLinkerFlags(int idCmd)
{
TCHAR szOld[1024], szNew[1024], *psz;

/* Get the current linker options */
if (AddIn_GetProjectSymbol(g_hwndPrj, _T("LINKFLAGS"), szOld, NELEMS(szOld)) == 0)
return FALSE;

/* Set the new options */
switch (idCmd)
{
case ID_RELEASE:
{
lstrcpy(szNew, _T("-release"));
break;
}
case ID_DEBUG:
{
lstrcpy(szNew, _T("-debug -debugtype:both"));
break;
}
case ID_PROFILE:
{
            if (_tcsstr(szOld, _T("console")) == NULL)
{
lstrcpy(szNew, _T("-debug -debugtype:both profiler.lib"));
}
else
{
lstrcpy(szNew, _T("-debug -debugtype:both profiler.lib user32.lib"));
}

break;
}
}

    if (_tcsstr(szOld, _T("console")) == NULL)
    {
/* Walk through the current options and build the new options */
for (psz = _tcstok(szOld, _T(" ")); psz != NULL; psz = _tcstok(NULL, _T(" ")))
{
/* Forget old options */
if (lstrcmp(psz, _T("-release")) == 0 ||
lstrcmp(psz, _T("-debug")) == 0 ||
lstrcmp(psz, _T("-debugtype:both")) == 0 ||
lstrcmp(psz, _T("-debugtype:coff")) == 0 ||
lstrcmp(psz, _T("-debugtype:cv")) == 0 ||
lstrcmp(psz, _T("profiler.lib")) == 0)
continue;

/* Add this option to the new linker options */
if (szNew[0] != '\0')
lstrcat(szNew, _T(" "));
lstrcat(szNew, psz);
}
}
else
{
/* Walk through the current options and build the new options */
for (psz = _tcstok(szOld, _T(" ")); psz != NULL; psz = _tcstok(NULL, _T(" ")))
{
/* Forget old options */
if (lstrcmp(psz, _T("-release")) == 0 ||
lstrcmp(psz, _T("-debug")) == 0 ||
lstrcmp(psz, _T("-debugtype:both")) == 0 ||
lstrcmp(psz, _T("-debugtype:coff")) == 0 ||
lstrcmp(psz, _T("-debugtype:cv")) == 0 ||
lstrcmp(psz, _T("profiler.lib")) == 0 ||
            ((idCmd != ID_PROFILE) && (lstrcmp(psz, _T("user32.lib")) == 0)))
continue;

/* Add this option to the new linker options */
if (szNew[0] != '\0')
lstrcat(szNew, _T(" "));
lstrcat(szNew, psz);
}
}

/* Set the new linker options */
return AddIn_SetProjectSymbol(g_hwndPrj, _T("LINKFLAGS"), szNew);
}

khyron

  • Guest
Switch between Release, Debug or Profile build
« Reply #25 on: May 24, 2005, 12:53:05 am »
it works perfectly  :D
thanks!!!

nitex

  • Guest
Switch between Release, Debug or Profile build
« Reply #26 on: May 25, 2005, 12:57:36 pm »
New version of the Addin which fixes the error pointed out by khyron and and a new error introduced by me. The check for the console project was changed from
Code: [Select]
if (_tcsstr(szOld, _T("console")) == NULL) to
Code: [Select]
if (_tcsstr(szOld, _T("-subsystem:console")) == NULL)

This could otherwise fail to build projects which include a console.lib for example.