Project Management: Setting Defines For example if a source file contains different #ifdef constructs, sometimes the user wants to toggle setting or unsetting of a define. This could be done either with introducing a comment character in the compiler define dialogue or using a split view window, where one column could be for setting a define and a second column for unsetting a define. The status of a define could be move between the columns by an arrow.
Assembler Options: If you select the properties->Advanced option of an assembler file and click "Use custom build command" then per default "$compiler $options $includes - c $file -o $object" should appear.
Checkbox for Prebuilt and Postbuilt Steps If you are using different postbuilt steps e.g. conversion of executable to a hex-file and followed by a build steps for flash programming it would be desirable either to have a a comment character for disabling postbuilt steps or introducing checkbox for selecting different post built steps.
Environment per build target E.g. you want to use different compiler version for two build targets. The compiler is parametrise in the toolchain executable as an environment variable GNUGCC that points to different MinGW compiler versions. This could be realised when configurations of environment variables could be assigned for each build target.
File Explorer in CB The file explorer (dmoore) and its shell extension can be used for flexible tasks like integrating Subversion support with gsvn or TortoiseSVN, diffing files etc. It should be integrated in Codeblocks.
Block Select Mode Currently CodeBlocks supports only the selection and copy in block mode (ALT) but cannot paste the content in this mode. This features is useful for changing the content of columns in an array.
Aspell Integrate Aspell as spell checker as CodeBlocks may be used as text editor too.
Linker Settings: If you link different libraries that contain cylic references, then the linker will issue an error. To solve the problem you can surround the library list by
--start-group <liste libs> --end-group
Could be nice to have a checkbox in the Linker settings that will provide this command.
Embedded: Add new tabs in the project settings for setting a predefined list of assembler and linker options (like in the compiler tab).
Extension Points for options: Add mechanism to lock inconsistent selection of compiler, assembler or linker options. E.g. if one march= is selected other march= should be disabled and issue a warning.
Occlusion highlight: http://forums.codeblocks.org/index.php?topic=7768.msg58463;topicseen#new (Ceniza)
Symbol-Browser: The scope of the search in the symbol browse should depend on the user selection Global Functions, Global Variables, Defines etc.
Search Dialogue: Add filter for searching with: Class/Struct, Union, Enumeration, Typedef, Function, Method, Variable, Namespace, Comments
Show Call Hierarchy: Show tree view of the called function and functions that were called before and after it.
Debugger Console: Integrate a gdb Debugger Console in CodeBlocks.
Hardware Breakpoint: For embedded programming it is required to add so called hardware breakpoints. To do that gdb settings set only-use-hw-breakpoints 1 are required. These breakpoint should have a different color. Additional it could be a nice feature to be able to disable and enable existing breakpoints.
Interrupt and Resume Debugger: Add button for interrupting and resume in the Debugger.
Section Browser: In the gdb console the command "i file" will display the names of the output sections with start and end address. This information could be displayed in a tree view and by selecting the name of the output section you can navigate between sections. This could be useful to set breakpoint in different settings.
Symbol View in Debugger: In some debuggers the symbols of an object (e.g. including startup code) are extracted and displayed in the symbol view. To get a clear view this view should provide a search dialogue and a filter mechanism for display the symbols.
Mixed Mode: Provide a context menu to get a mixed mode (source code and assembler output) in debug mode. This should be possible for alle files within a project. In this view the user can set breakpoints in the assembler lines.
The display in mixed mode can be achived with the use of the GDB/MI interface (see gdb Manual gdb/mi Command Syntax): Since gdb 6.1 the debugger can perform mi command with the use of interperter-exec command.
interpreter-exec mi "-data-disassemble -f main.cpp -l 2 -- 1"
The passing of --0 or --1 will provide information for mixed mode if it is parsed.
Tabbed View: The windows of breakpoint, variables etc. should dockable in a tabbed view.
Multiple Watch Windows: In complex application with many watches the windows becomes unclear, since that a search function in the watch window would be cool. In addition it is diserable to have multiple watch windows to group some variables in "categories".
Write Access to Register, Memory: Sometimes it is necessary to modify controller registers of values in the memory, therefore the memory and register view should provide a feature modify he content.
Special Function Register: Architectures like PowerPC or TriCore have tousands of Special Functions Registers, which are not convenient to display them in the debugger. A browse dialogue for special funcions registers would simplify life.
Multiple Debugger Instances: In embedded applications it is necessary to debug different projects (AVR, PowerPC etc.) simultaneously. For this reason the debugger mustn't be stopped when switching between projects.
Memory Consumption: A bar/gauge view of the allocated memory in different output sections.
Squirell Debug: Squirell scripts provide a simple mechanism to add functionality to CodeBlocks. The possibility to debug these scripts in CodeBlocks would be nice.