What is "- Source code breakpoints" in RadAsm?
Could someone teach me?
Posted on 2003-02-25 22:29:57 by The Svin
Hi all

To clear up a few things.

1. Source code breakpoints has nothing to do with vkim's debug macros.
2. Nothing prevents you from setting a breakpoint outside the WindowProc
3. You need the RADbg.dll addin.
4. You need to include RADbg.inc in your project.

Also, current RadASM window handle is assembled/linked into the exe. Remove all breakpoints before building final version.

KetilO
Posted on 2003-02-26 01:49:38 by KetilO
I have RADbg.dll in Addin folder.
I included RADbg.inc in my project.
Set bpoints - and nothing happend.
Where those dumps are shown?
What else I might have done wrong?
Posted on 2003-02-26 03:40:22 by The Svin
Hi The Svin

1. In RadASM.ini section insert following:

x=RADbg.dll,0

Where x is the next free number.

2. Include RADbg.inc in your source code.
3. Set a breakpoint in your code.
4. Rebuild exe
5. Run exe

A dialog containing current register values will show when breakpoint is reached.

KetilO
Posted on 2003-02-26 04:06:19 by KetilO
It works now, thanx.
I wouldn't hide regdump window.
Posted on 2003-02-28 11:12:23 by The Svin
Hi The Svin

Agree, but it is impossible as it is the modal window that halts the process.

KetilO
Posted on 2003-02-28 11:34:00 by KetilO
After having tried it, I still prefer use usual debugger, setting
int 3 in places when I want breakpoints.
And yet setting breakpoint your way in source is very comfortable way to do, especially having the feature of
removing all breakpoints, wich can free one from looking
if he forgot to remove int 3 from source.
So my question is - might it would be possible to add some additianal thing about current breakpoint setting system - so that setting breakpoint would just insert int 3
in code (unseen in code) and remove it when breakpoints are removed?
This way I could set breakpoints your way in code but use them with usual debugger as now I do inserting int 3 in code instead of setting breakpoints?
Posted on 2003-02-28 15:24:48 by The Svin
Hi The Svin

Just change:

x=RADbg.dll,0

To:

x=RADbg.dll,1

KetilO
Posted on 2003-02-28 15:53:14 by KetilO
Very good :)
God bless you!
Posted on 2003-02-28 16:09:21 by The Svin
1. Could you make Sniplet window closing with Esc key?

2. Is it possible to make submenus in Tools menu?
To many tools to settle in one level list.

3. I also think that with usefull feature as API\constants
lookups and complite RadAsm need some kind of utility
to manage all sorting in API and constant files and
easier editing\adding also.
Kinda database\editing utility.
I can code it when have time and design in my mind.
If you can do it, I'd be happy.
Posted on 2003-03-01 02:46:40 by The Svin
Is there some shortkey to switch between parts of splitted window?
Posted on 2003-03-03 14:59:13 by The Svin
Hi The Svin

Sorry, by mouse clicks is the only way.

KetilO
Posted on 2003-03-03 15:15:30 by KetilO
Hi The Svin

Yuo can now use Alt+Ctrl+Home or AltGr+Home to jump between splits.

KetilO
Posted on 2003-03-04 03:03:43 by KetilO
If you still need kind words - I have a vagon for you.
I think utility is needed for easy adding\sorting APIs and
constants.
I can code it but it's better to discuss disign with you.
I think of the following logic:
data
We have two files that are logically connected in
relation one to many:
masmApiCall.api
masmApiConst.api
Program is based on the first as parent.
It (for example) loads from the file in some main
list names of API functions from masmApiCall.api.
In the list only names for it, arguments are seen only
when user select some name, then arguments of selected
item shown in some other list or whatever element of interface it would be.
The programm also allow to add some new function in
masmApiCall.api - in the case in after receiving user
input does some job:
1. Checking to avoid dublicates if the function with specified name is already in masmApiCall.api.
If the function is found - it informs user of it and stop addition job.
2. Else - it add the new function and resort masmApiCall.api , then saves it resorted.

3. Reload list of functions.

Adding new api - argument constant is in following order:
When function name is selected - user can see
arguments.
He selects one of argument and then perform easy job
on adding constant.
Assume we have some list that will display constant that to be added.
Obviously those constant should be Windows.inc.
And in most cases the constants have simular prefix
CS_ or TBBS_ or whatever
So there are one auxilary list - user just specifys prefix
and the prorgramm is loading all constants with the
prefix specified from WINDOWS.INC to the auxilary box
after that user can add all items from auxilary box to
"final" constants box or add just some of them.
Of course all the boxes should have easy methods to
delete, add, move from them etc.
When final constant box has all items the user need to
add as constants group for some API argument - user
presses some "ready" button and the programm formates it to needed string as it should be in masmApiConst.api.
User don't need type anything, nor Api and argument names, neither number of argument - the programm does it itself according to user selection. User also doesn't need type or copy\paste constant names - he
just need specify prefixes for the constant and the programm would load constant with specified prefixes
into box in wich user can do final selection accepting
all of them or deleting part of them from box and accepting the afterwords.

What do you think?
Posted on 2003-03-04 11:16:49 by The Svin
Hi The Svin

Your idea sounds very good. Only one final thing. The user should be given the posibility to override the sorting order of the constants based on what is most likely to be used. A good example is MB_OK

KetilO
Posted on 2003-03-04 12:53:15 by KetilO
...and what about automatically removing obsolete project names form history(when try to open the obsoleted) and one more sub menu for previously opened files also? I always missing these features.

Best Regards
Posted on 2003-03-04 18:17:04 by cakmak
Ketil,
About "Proporties" window, data names, "Scan Project" function.
Very usefull feature, but it doesn't differ names from other complex names
where the name word it a part.
In other words it generates list that reffers to both for example
hIcon
and
wc.hIcon
Though they are different things.
I think searching procedure should make check if it is separated word.

One more question: What is CodeTree and where can I get it?
Posted on 2003-03-13 14:45:47 by The Svin
Hi The Svin

I think Code Tree was an addin eko made. It was for collapsing / expanding procs in the richedit.
It was not stable so I think eko gave up on the addin.

hIcon / wc.hIcon. I will see what I can do.

KetilO
Posted on 2003-03-13 15:00:54 by KetilO
I remember old talks about ApiConstants LoopUp support
for multiline invoke call syntax.
Do you still plan to do it?
And also about struct constants lookup support.
Posted on 2003-03-17 10:30:15 by The Svin
I also hate to do both adding Api calls
and adding Api call constants.
The tool will manage both operations + Windows.inc
parsing lookup.
As to treeview\listview - I don't see any place for
those controls in the tool.
TreewView is used when there are hierarchy relationship
between data with not unified include levels.
ListView is used when there are several (more than 1)
parameters on one level record.
And number of parameters unified.
Talking of logical relation of data in ApiCalls ApiConstunts
RadAsm usage issue - here is very clear 3 level relation
that suit realative database model:

ApiCalls - (OneToMany) ->ApiParams -(OneToMany)->ApiParamConstunts.
In database it would take three tables, and all the table would
have just one not_a_key usefull param that need to be displayed
(has some meaning for user).

That mean that control that display just one param in raw
will be enough.
For example 3 list boxes.
1st ListBox displays All Api function names found in RadAsm
2nd displays Api function params of Api functions name selected in 1st ListBox
3rd displays constant list of param selected in 2nd ListBox

You can add, edit, delete etc. Items at any list box without
additional specification of relation. Interface itself manage relations.
Cause 2nd list box's list depends on item selected in 1st, and 3rd listbox
depends on item selected in 2nd.

You just select API name from 1st listbox, 2nd listbox would be filled
with params of the choosen API, select needed param in 2nd listbox
and all that will be in 3rd list box (displayed\edited\modified\deleted etc.)
will be treated as Api constants for Api from 1st listbox and param of the Api
selected in 2nd.
If the param allready has constant list that is in *.api file - it will be automatically
loaded in the 3rd list box and any change\addition etc in the list will be automatically
applied back to the *.api file.

It will be automatically created relative database, based on parsing of 2 files,
with preceeding syntax check.

I also think of utility to merge different *.api files.
'Cause Ketil supplys new *.api files (updated) and at the
same time RadAsm users themself update the files,
so that some lines from Ketil's files may be missing
in user's files, and in opposite some lines in user's files
may be missing in Ketil's, to say more - they may differ in
names for params etc.
so the utility will integrate all the work adding to old files
only lines from updated by Ketil files that is absent in
users *.api files.
If difference found - an option will be given user to specify
wich version of ApiCall line he would like to see in a new integrated file.
Posted on 2003-03-17 14:24:24 by The Svin