Code::Blocks Forums

User forums => Help => Topic started by: tom0769 on September 16, 2010, 08:53:08 am

Title: redirect output of post-build step
Post by: tom0769 on September 16, 2010, 08:53:08 am
I am using CodeBlocks with mingw installed on a Win XP system.

I want to output all symbols of a debug exe to a file to parse it for later use.
I found that the binutil "nm.exe" does the job pefectly for me.
With the following command executed in the command shell, I can output the symbol table to a file:

"nm.exe .\bin\Debug\LT_Simulation.exe > symbols.txt"

Now I want to do this as a post-build step (Project - Build options - Pre/post build steps).
The nm-command works, but the output always goes to the build log window.

How can I redirect this to a file?
Title: Re: redirect output of post-build step
Post by: oBFusCATed on September 16, 2010, 09:33:40 am
You can make a bat file and execute it as post build step.
There is a possibility to write a shell script, but it is harder to setup (I think)
Title: Re: redirect output of post-build step
Post by: MortenMacFly on September 16, 2010, 09:49:50 am
How can I redirect this to a file?
Use the tools menu. Setup a tool (like a script or batch file) that does the re-direction. Use macros in the tool so that it is generic enough to work with any of your applications.

"nm.exe .\bin\Debug\LT_Simulation.exe > symbols.txt"
Are you aware that there is a symbol table plugin - the frontend to nm???
Title: Re: redirect output of post-build step
Post by: oBFusCATed on September 16, 2010, 10:12:18 am
Morten: can you execute a tool in a post build step?
Title: Re: redirect output of post-build step
Post by: MortenMacFly on September 16, 2010, 10:15:31 am
Morten: can you execute a tool in a post build step?
No, but I can press the entry in the tools menu after the compilation. :-)

It might be possible to do the thing I've described using scripting in the post-build step though...

However, adding the ability to launch a tool (with a specific ID) from within the pre- post-build steps might be worth a thought though...
Title: Re: redirect output of post-build step
Post by: tom0769 on September 16, 2010, 11:26:20 am
Hi all, thanks for replies!

Is there a macro for the location of the toolchain executables, so that it can be used to setup a tool?

I need to avoid absolute path names for both, project files and toolchain,
since this should be used by different people working with in different enviroments.

BTW
How can I get the symbol table plugin?
I found it listed at "http://wiki.codeblocks.org/index.php?title=Code::Blocks_Plugins" but page does not exist.
Title: Re: redirect output of post-build step
Post by: ollydbg on September 16, 2010, 12:11:30 pm
Is there a macro for the location of the toolchain executables, so that it can be used to setup a tool?
I guess you can get the toolchain path from the compiler plugin, but I'm not sure which function can get this. ( I have briefly read the public function of compiler plugin plugins\compilergcc\compilergcc.h, but does not find the answer..)
Title: Re: redirect output of post-build step
Post by: tom0769 on September 16, 2010, 12:54:25 pm
Use the tools menu. Setup a tool (like a script or batch file) that does the re-direction. Use macros in the tool so that it is generic enough to work with any of your applications.
I setup a tool calling nm.exe using macros, but I still cannot write the output to a file.
The output goes either to a console or to stdout (Code::Blocks log window) depending on the launch option.
Title: Re: redirect output of post-build step
Post by: tom0769 on September 16, 2010, 02:50:54 pm
In the configuration file "default.conf" there is an entry for each compiler:
<gcc>
    ...
    <MASTER_PATH>
        <str>
            <![CDATA[C:\Programme\CodeBlocks\MinGW]]>
        </str>
    </MASTER_PATH>
    ...
</gcc>   

Is it possible to get this information via a macro?
Title: Re: redirect output of post-build step
Post by: MortenMacFly on September 16, 2010, 04:46:15 pm
How can I get the symbol table plugin?
If you use the installer, just enable it.
If you compile from sources, do the same.