=============================================================
===== FBDEBUGGER / V2.91 / 20-Aug-2016 / (c) L.GRAS      =====
=============================================================

Version 2.91 (2016/08/20)

fixed 
- proc overloaded --> crash fbdebugger
- fixed bad behaviour on proc_end
- step out not possible if procs are executed before main (constructor for shared)
- "exit for" not at the right place in test rtfrun when an exception arises
- erasing of updown variable for multiple index windows
- flagtrace for line not working (since using unicode)


added
- break on var also displayed in the menu
- allowing multiple index selects for showing different arrays (or the same one with different indexes)
- autoupdate in 'index select'
- autoupdate checkbox in index windows (default = no update)
- check added to avoid issue when saved window coordinates are wrong (thanks to St_W)
- tracking array, usefull to easily follow the values of an array with the help of variables used in loops (request by sancho2)
- workaround when the end of data debugging (stabs) seems wrong (report by luis Babboni)

changed
- removed test {MODLEVEL} to see code outside procs in libs / inconvenient all these procs are visible now
- in case of iterators (for loops) with datatype declaration and same name only one is kept as they all have the same adress, to avoid multiple unuseful lines in proc/var tree (only GAS version)


Version 2.90 (2015/10/03)

Fbdebugger is now Win64 compliant, only one source code. And Boolean the new standard type is handled.

For Win64 the objdump.exe tool is absolutly necessary in the fbdebugger's folder.
I provide them (32/64) in the zip file but you can also grab them from the net 
e.g tdm-gcc.tdragon.net/download and select binutils

To compile just add '-g'

======== DEBUG WARNINGS =================
- The array defined (A to B) are internally changed by the compiler to zero based arrays eg 4 TO 7 becomes 0 TO 3.
In case of shared fixed-lenght there is no information in debugging data for retrieving the initial definition. So problems should happen.

- Lines from include files and not in a proc are not correctly associated with their file : they are tagged with the main file.
- Due to the way naked procs are defined they are not included in data debugging
=========================================

 fixed
 - impossible to kill current debuggee when launching a new one or restarting the current (just a stupid test...)
 - warning on null in some sendmessage API, value changed by zero
 - bug found by sancho2 : dyn array field in an udt used as byref param was uncorrectly handled
 - bug found by sancho2 : bad return handle when double returns (in case of recursivity) without possibility to restore the breakcpu before execution
 - wrong size of data in index selection in case of pointer variable 
 - some bugs with gcc version
 - restart was not possible (only gcc)
 - when a proc hasnt param/loc var the display for the next defined one is erroneus
 - compil info in unicode (reported by solbianca)
 - fastrun working in 64bit (stack size issue)

 added
 - improved show char at position
     - extended to wstring
     - select first/last char
     - move forward/backward 40 chars
 - unicode support (there might be still some issues)
 - 64bit version (one source code)
 - string '64bit' or '32bit' displayed in the window title
 - all registers are logged (show_context function) 
 - boolean handling
 - message if objdump is not found (64bit only)
 - position/size main window saved and restored when launching fbdebugger (requested by solbianca)
 - in About option to launch explorer with the dedicated page on the freebasics forum
 - new asm option : show values of processor registers 32/64bit
 - new type of breakpoint using a counter decremented each time the line is executed and stopping when only zero is reached eg if counter=10 brkp the 11th execution. Initial value saved for reseting or between session
 - a new option in proc/var tree for searching any text in the tree warning : the search is sensitive


 changed 
 - display of values for 2 dims or more arrays. if more than 2 dims only the 2 most right are shown (see select index)
 - possibility of moving by row, column, page, block and of changing size of column
 - select indexes by clicking on any cell
 - exepath added if a short filename is used as param in command line to avoid error case gcc (eg fbdebugger mypgm.exe --> c:\freebasic_code\mypgm.exe)
 - console window resized and aligned on left
 - new icon, button for forcing the next executed line
 - only an array of ubytes could be exchanged with zstring (previously only byte)
 - in settings, time for autostepping is set to min (50) or to max (10000) values if out of bounds
 - an entire proc is now dissassembled, before last intructions were missing
 - increasing width of global window (900) to display correctly memory dump of bytes



Version 2.81 (2015/29/04)

Requests,bugs found or remarks by St_w, AGS And Marpon

Changed
- userfriendly display when an exception arises and especially for access violation (displaying all exceptions in same way)
- monospaced font used for dump memory. Size of window should be resized for byte and UByte (St_w)
- to change the value of any cell in dump memory : left click on it
- more explicit error message when trying to display single or double in hex format
- all Sub and Function are private for a smaller exe (marpon)
- simplification when calling objdump (marpon)

Fixed
- improved demangling to display correctly complete names when using namespaces and letter 'K' is handled
- overflow in shortcut table (AGS)
- searched variable in source code window not found if namespaced (AGS)

Added
- to show return value of a proc : use show/exp directly on the proc name (proc/var tab) (St_w)
- to copy variable value in clipboard (all or only one with its childs) : select the new option, copy to clipboard, in contextual menu (St_w)
- to show the dump of deferenced data : select new option, pointed data dump, in contextual menu (St_w)
- to copy dump into clipboard : shift+left click on one cell / on header for whole page / address area or ascii area for one line or multilines (St_w)
 the dialog box to valid selection is automatically opened if currently closed
- to change the beginning address of dump : ctrl + left click on one cell (data or address area), datatype must be integer/uinteger
- to use the value in a cell as a pointer or directly as beginning of udt data in shw/exp : alt+left click on a cell then select no pointer or pointer and the datatype. The dialog box to valid selection is automatically opened if currently closed.
- display of the character at a given position in a (z)String with possibility to move forward and backward (proc/var tab)



Version 2.80 (2014/09/21)

Changed
- when exiting, display message about notes only if necessary.
- Every exception handled as access violation (display of line, etc)
- stabs size up to 50000 bytes.

Fixed
- issue when only one line code was executed
- weird bug if a loaded dll was an exe (found when using open pipe under W7)
- names of compiler and editor searched now with case insensitive (be_design)

Added
- table to display elements of arrays (see select index option), moving by line/page and select an index by clicking on
- dynamic arrays handled when using -gcc
- dynamic arrays in UDT
- elapsed time is displayed in status area when using run or fast run
- (AS)"," (CS)"," (CD)" displayed according the used debugging data : S=stabs or D=dwarf
- message if it's not possible to modify registry (JIT debugger, see tools)
- parameters debuggee are now saved
- automatic constructor/destructor added by the compiler are only visible in the procs tab.



Version 2.71 (2013/10/27)

Fixed
- Partial wrong display when dissassembling a proc
- Global variables become unaccessible at the end of the first executed proc if it is not the main one, eg constructor for global vars. (ChesterDennis)



Version 2.70 (2013/09/29)

Added
- "(A)"=gas Or "(C)"=gcc is added near every file name to indicate the compilation option
- proc backtracking  to follow in both direction the proc calls. Closed if running, added in proc/var Tab And thread tab (dinosaur)
- proc call chaining to follow in one page the call chain (procs/vars and thread tab) (St_W)
  Click on a line to jump (same time in source code and in proc/var tab)
- locate calling line in thread menu
- dissassembly of one line or one proc with insert of each basic Line (source code tab, proc/var tab and proc tab)

Fixed
- length of udt when multiple of 4 Or 8 (will be also fixed in next version of fbc 0.91)
- fbdebugger should be fully working with the gcc option
- wrong number for first line of proc, gcc only (will be also fixed in next version of fbc)
Although there are still some issues :
	- dynamic arrays missing (will be fixed in next version of fbc)
	- ztring And fstring are handled As ubyte arrays (a feature in fbdebugger allows to display ubyte array as string)
	- bitfields are also differently managed
	- parameters with a size less than 4 bytes are handled as Integer 
- typos in comments by AGS (thanks)

Changed
- delete Log file doesn't change any more the kind of the log (screen, file,..)
- the string "local", not really usefull, is removed for each local var name in proc/Var tab.
- the strings "constructor/operator/destructor/func/sub" are now put after the proc name to get a right sort in proc tab.
- all the names of Operator, etc are demangled
- some option names have been modified (show <-> locate)
 



Version 2.64 (2013/07/27)

Added
- an option in tools menu to remove the log file in source codes tab.
- the type of log (screen, file, ...) is saved in the ini file (request by Enform) 
- in procs tab, the proc could be sorted by their name or by their file name, option in the contextual menu and saved in the file ini (requested by MOD)
- in procs tab, select proc to jump in the source is also possible by pressing SHIFT key 
- Operator, Property, Constructor, Destructor, Public and Private are displayed in red like Sub And function
- In settings, customization of shortcut keys for every menu option
- An option in tools menu to show all the shortcut keys.
- some menu options corresponding to buttons (halt, kill, modify execution and fast run)
- An option in tools menu to show the elapsed time when fast run is used. Usefull to get the duration of a block of instructions.

Changed
- new open file icon (more standard image) for better understanding (requested by MOD)
- end message (quit fbdebugger) modified for better understanding (requested by MOD)
- fbdebugger's help file is associated with fbdebugger and closed when quiting it (use of htlmphelp function)
  In the future, easier use of the help file. 
- Optimization of restart in order to avoid useless reloading of bas files (idea by MOD)

Fixed
- at debuggee loading remove the variable fb_compil_info to avoid its display
- double display of shared arrays used with erase (FBC bug, fixed par dkl in a next release)
- Issue with file names due to a change in FBC version 0.90 (reported by MOD)



Version 2.63 (2013/04/22)

Added :
- Breakpoints saved in ini file.
  when starting a new execution of FBdebugger, breakpoints from dll are displayed only if the corresponding dll is loaded.
  in some cases hidden dll breakpoints could be removed, overwritten by others visible brkp
- Brkpoints could now be disabled/enabled (colored in grey). In breakpoints management new buttons ENB/DSB.
- If the selected line is without breakpoint when using disabled --> create directly a disabled permanent breakpoint
- New icons replacing S,V,M and restart buttons
- New option "Step return" (button and short cut key "B"ottom) : execution till the end (exit sub, end sub, etc) of the current proc.The purpose is to be able to look at the variables before leaving the proc.
- New option "Step top" (button and short cut key "T"op) : execution till the first Line of next called proc.
- In case of automatic change of thread (mutex or threadcreate) a message is displayed giving the choice of which thread will be the current.
- Addresses (start, End And stack) about running proc  (option in threads menu).
- Multi threads step auto : step auto alernates between selected threads (checkboxed in threads tree) 
- Beginning of proc are marked by Keywords sub and function colored in red for better visibility. 

Fixed :
- Italic police no more used for highlighted keywords
- Minor bugs
- Optimization when restoring previous instruction (replacing &hCC)

- The help file has been completly revised, v1.10.


Version 2.62 (2013/02/16)

Added
- Tutorial demo (work in progress), see tutorial in tools

Fixed
- Issue when using mutexes (current thread not changed)
- Some internal debugging traces removed


Version 2.61 (2013/02/10)

Added
- show the first executable line of main (proc/var or thread context menus)
- procs are now sorted by thread in proc/var windows
- proc tree in threadview
- few options added in thread context menu (eg select item to show proc in proc/var treeview)
- new keywords (virtual and abstract) added
- better management of dll
- debugged Dlls list (tools)
- watched var for dll : only basic types and pointers are kept between two debuggings
- list all proc/var in log (proc/var context menu)

Fixed
- no calling line for a thread
- issue when modifying execution on last line of proc
- infinite loop when 2 dlls or more are loaded
- other minor issues 
- loading one time each source (never unload) (St_W)
- closing handle of unloaded dll so they are no more locked by fbdebugger (St_W)
- shared var provided by dll are now managed (St_W)

WARNINGS
- User manual not updated still 2.58 but not really a problem ;-)



Version 2.60 2012/11/19

Added
- wrapping/no wrapping for the "Show String" Window (proc/var context menu)
- choice of font including size, saved in the ini file (settings)
- highlighted keywords (settings)
- choice of the color for background and lines (current/breakpoint), saved in the ini file (settings)
- strings (except wstring) can now be used with break on var, 25 chars max
- new option "focus line" (shortkey L) in the source window opens a window to follow the executed line  or an other part of any source module. This window hasn't the horizontal scrolling style.(proc/var context menu)
- set watch var with/without trace (proc/var context menu)
- exchange between Byte And ZString type to fix the fact that with gcc the zstring are stored as byte array (proc/var context menu)
- locate the line where a proc has been called (proc/var context menu)
  For an easy use, collapse the treeview to see only the procs like a sort of call stack
- option "show executable lines" has been replaced by "mark no executable lines", the lines are displayed in green (proc/var context menu)
- Improvement in threads management (simultaneously 10 threads) :
	To kill threads
	To show next executed line
	To locate the proc at the start of the thread
- naked proc could be debugged (gas)
- address in memory of cursor Line (sources window context menu)
- parents tree for inheritance is displayed in proc/var Window, variables added by compiler are shown (proc/var window)

	
Fixed
- issue when comments are used in asm lines
- better support of -gen gcc option : the management of variables except some should be correct.
  In fact Fbdebugger translates the gcc data stabs in the old form (-gen gas) before use.
  Sometimes there are issues with line numbers, Not sure that it could be easily fixed.
- issue with ThreadCreate crashing fbdebugger when exiting, missing argument "p as Any ptr" added in the called procs 
- issue when the register EBP is modified in asm lines (reported by VANYA some months ago) 
- issues With threads (few threads with same proc, deleting proc when ending thread)
- issue when using screen command : killing proc --> freeze

WARNINGS
- if the version of gcc is > 3, add this parameter -Wc -gstabs+ in the FBC command-line in addition of -g otherwise the stab datas are not added
- User manual not updated


Version 2.59 2012/04/15
Added
- Shortcut key 'R' in source context menu  (jmg)
- local watched kept between calls of proc (jmg)
- watched kept when rerunning immediatly the debuggee (jmg)
- watched kept except arrays and memories after closing fbdebugger (jmg)
Changed
- Use of shell to compile, no more need of batch file (Vanya)

Version 2.58 2011/11/27
Added
- New help file : fbdebugger_help.chm version 1.0
- The line breakpoints are kept when restarting the debuggee. You can eventually delete one or more breakpoints.
- Two new hot keys (F3 and SHIFT+F3) to put/cancel breakpoints.

Version 2.57 2011/09/12
Added
- variables or memory tracing when their values change (enform)
- remove in case of already set watched element
- different formats (hex, binary,..) for watched vars
- jit debugger
 this option allows to define fbdebugger to be automatically launched when a debugbreak instruction is met or an access vilation is occuring.
 obviously your program has to be compiled with the -g option.
 I remind you that there is a possibilty (by button or key M) to change the program flow within a procedure. So you can either skip lines
 or rerun some lines with possible changes of values.
- executable lines colored in green (only current source tab)
Fixed 
- options in watched var menu not working correctly


Version 2.56 2011/07/26
Added
- Ctrl+F To complete 'the find in text' option in context menu
- WString in 'show String'  (z/w/String option)
- option in tools menu 'compile info' gives the version and the build date of FBC, the used backend and the debuggee compilation date
  just add anywhere this line
  Const FDBG_COMPIL_INFO="$$__COMPILINFO__$$"+__FB_VERSION__+"/"+__FB_BUILD_DATE__+"/"+__FB_BACKEND__+"/"+__DATE__+" "+__TIME__
- Up To 10 bookmarks,ctrl+f2 To toogle, F2 to Next And shift+F2 to previous
  only in the current file. When beggining or end of file is reached a dialog box allows to restart the search. 
  There is also a possibility to select by a combo box showing all the bookmarks (all files)
  <file name>[Line number]beginning of the line
Changed
- Hotkeys run cursor, etc put at top of right click menu
- the current line moves and no more the source code unless necessary
- focus set on the find text window and initial value highligted
Fixed
- The code source stays always left justified even with long lines

Version 2.55 2011/07/17
Added
- Check if a var is already watched (jmg)
- more informations about files locations, params in settings (jmg)
- left click + ALT on a variable to add it in the watched var list(jmg)
- use of Fx to direct acces (jmg)
  F1 to display the help file
  F9 to compil the main source and run in debug mode
  F10 to launch the IDE with the main source
  F11 to start the quick edit mode 
- Option to kill running pgm when use of quick edit
- 2 options in quick edit : [save,compile and run] if only one source file / [reload] (jmg)
- message if right click and no watched var 
- shortcut keys in the menus (jmg)
- up to 10 'show/expand' windows with the possibility to close/to arrange all (AGS)
- option in the 'show/expand' window to move forward/backward in function of size of standard or udt type (AGS)
Fixed
- the options for log not displayed and 'no log' by default restored
- missing name of debuggee exe in the commandline (AGS)
- focus set and visible cursor when quick editing (jmg)
- no more issue with debug hot keys in quick edit (jmg)
- missing options (edit,dump, etc) in watched var list

Version 2.54 2011/07/07
Added
- the possibility to desactivate the tooltips (settings), choice saved in the ini file (idea from Enform) 
- a control to check if FBDebugger is already running, with the choice to stop or continue (idea from Vanya) 
Fixed
-  some 'little' bugs, all the compilation warnings 
-  parameters in commandline mode are now used for the debuggee and also in case of bas file for compiling
Changed
- up to 10 watched variables or pieces of memory, updated also when auto mode
- enlarged console window for trace 
- position of displayed current line (settings) ' 5 lines from top, 1/3, 1/2, 2/3  saved in the ini file
- size font now saved in the ini file 


Version 2.53 2011/05/01
- add possibility to terminate directly the debuggee when launching it again or a new one

Version 2.52 2011/04/21
- add use left click + CTRL on a variable name for direct access to informations about this variable
- fix a display bug on the sources windows
- add drag and drop files (exe or bas) on the FBdebugger window to start compiling (bas) and debugging
- chg path/name of fbc and ide put with settings are now saved when exiting fbdebugger
- chg load .bas then auto compilation and debugging

Version 2.51 2010/03/07
- add possibility to change the font size (8,10,12)

Version 2.5 2010/01/24
- add list of named enums (tools)
- add if enum named show text for the values of the item
- add show/expand variables including udt/pointer
      with edit, dump, etc
- add more complete "un"mangling names (operator)
- chg display log file as source so find text is possible
- fix crash when using settings with killed debuggee

Version 2.4 2010/01/03
- Goto line in sources windows shows also the current line number 
- Option in tools to delete the log file
- Shared and common variables management , display outside main proc
- Fix wrong display of [+] in proc/vars window (thanks McLovin)
- Fix lost cmdlines (thanks McLovin)
- Fix big bug with udt inside few modules 
- "loading debug data" and "loading sources" messages in status bar
- Fix named enum in stabs management, treated as integer
- Fix wrong return value display (private/public and all datatypes)

Version 2.3 2009/12/20
- Now size source file up to 500000 bytes

Version 2.2 2009/12/16
- Change police for monospace "Courier New" (all the windows)


Version 2.1
- a nice icone for FBdebugger
- you can now easily switch between threads, only one could be in execution while the other ones are waiting
- an option in variables window menu allows to display a string, up to 32000 characters (for more use dump).
- you can attach the debugger to a running program, usefull in case of infinite loop. double click on the process to attach
- warning if a source file is newer than the executable file


version 2.0
- many fixed bugs (display, use, etc)
- execution modify (only in the same proc) to skip some lines or to execute again some parts
- new display (more line for codes and variables) with resize
- speed improvement (2 threads : one for GUI and the other to treat the breakpoint)
  and fast run
- fast run by mimimum over head but no possibility of break on var or on mem as standard run
- trace (proc and line) on a console, file or both. Console displayed only if needed
- verbose mode on/off to get address and advanced informations
- settings
- access violation (memory error) managed : you can change values/skip (not executed) the concerned instructions or terminate the program.
- the name of proc displayed with proc pointer
- index selection for arrays, you can easily watch the elements one by one
- shortcut keys  (step, run, etc)
- bitfield in udt, only displayed
- for datatype ptr shows also the data (edit mode)




- Feel free to send me (sarg AT aliceadsl DOT fr) bugs, remarks and especially suggestions, improvements











