|
As a suggestion you should create a test app that does a very simple deserialization.
Then run with Purify.
If it still crashes then it would suggest that there is a bug in Purify.
If it doesn't then add attributes one at a time into the test object, testing each one, to bring it up to match the object that causes the crash in your app.
If you replicate the full object without a crash then if it was me I would suspect some bug elsewhere in your code, specifically unmanaged code. Bugs in unmanaged code can cause failures long after the actual code ran.
|
|
|
|
|
Usering a Test App I was able to deserialize complete XML file. But Can you please suggest the tips to find the issue.
When I run without purify every thing is fine
But when I rung with purify the issue comes. May be purify is sensiable enough to catch the issue, but I want to find the exact location of the issue. Please advice
thanks in advance
|
|
|
|
|
ptr_Electron wrote: Usering a Test App I was able to deserialize complete XML file.
Presumably you mean with Purify running.
If so then as I suggested I would then suspect and first look to any unmanaged code in the application. If you do not have unmanaged code (nor 3rd party libraries that use it) then obviously that is not a problem.
If you don't know if you have any then I can't help you with that. And if you have it but don't know how to find the problem then the only sure way is via inspection. However streneous testing can help.
|
|
|
|
|
Yes, correct.. running the test application with purify with the same xml file is very well running fine.
But when I run my application with purify with the same xml file then it crashes at Deserialize method.
So the Unmanaged code before calling the Deserialize method should have some issue. I have that unmanaged code
So I believe this should be mostly some kind of memory overwrite issue ?
Do you think windgb or App verifier should give some clue.
Thanks for your time
|
|
|
|
|
ptr_Electron wrote: So I believe this should be mostly some kind of memory overwrite issue ?
It is a 'pointer' problem. There are many ways in which a pointer can be misused.
An overwrite is one way. An underwrite is another. A miscast is another. Misusing sizes is another. Etc.
There are C++ (straight C++ apps, not managed) tools which exist to determine in problems C++ code. It requires that one excercise the code very well.
Inspection is probably still the only sure option - at least as sure as it can be.
|
|
|
|
|
i want to show count down of seconds, as the user enters the answer the countdown should have stoped....just like a quiz program, i want to do it in VC++6
|
|
|
|
|
Create a dialog(whatever) , use function SetTimer to set the timer.
(like SetTimer( your_window,QUIZ_TIMER,1000,0); )
then handle WM_TIMER message . In mfc you can handle it by adding the ON_WM_TIMER macro in message map.
then in OnTimer callback check for your timer id then do whatever you need to display
void MyDialog::OnTimer( UINT id )
{
if( id == QUIZ_TIMER)
{
}
}
If u can Dream... U can do it
|
|
|
|
|
Try the TaskDialog or ProgressBar (or any other) controls from MSDN[^].
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Callback is the delegate. I have a calculated string which give the function name and I want to pass this string to delegate. How can I achive this. Please advice
String FunctionName ="Myfunction"
String FunctionID="5679"
FunctionName = FunctionName + "_" +FunctionID
cbk->m_pCallBack = gcnew Callback(this, FunctionName);
Please advice
|
|
|
|
|
Please don't cross-post, its considered rude. Choose a forum and stick with it, and you're more likely to get a response.
If you know the type of the object, Reflection can be used to get hold of a function by it's name. Take a look at the Type.GetMethod function.
|
|
|
|
|
You are not interested in money, I have a big money-making business to find someone to co-operation, preferably a six-man team, the language proficiency need to compile C + + VB and reverse compile, add my MSN ootp2010@hotmai.com interested
|
|
|
|
|
Hello
I should make a computer shop with c++ using classes. Please help me anyway you can.
|
|
|
|
|
Start by reading some books and learning C++. There are also lots of articles here on CodeProject with ideas for almost anything you want to do; take a look at some of them, you will find it a rewarding experience.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
I have the problem tasking get file using sftp in MFC.Can you help me?You can give me a demo code about this problem.I thank you very much.
|
|
|
|
|
Well just look[^] what Google turned up!
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Hey Friends
I need to know in an application whether the OS is 32 or 64 Bit.
My Code is compiled in 32 bit and is running on a 64 bit pc.
Tried
if(sizeof(void *)==8)
{
//64 Bit
}
else
{
//32 Bit
}
Does not Works
Regards
|
|
|
|
|
there is at least one Tip/Trick on this subject, with some alternates; none of them I consider satisfactory though, and I haven't found the right approach yet.
There are three levels to the problem:
- what is my application doing?
- what is my operating system capable of?
- if running on a virtual machine, what is my physical machine capable of?
First make sure which question you need answered.
FWIW: Are you sure you want a managed code (i.e. .NET) solution, or are you a native C++ speaker, simply lost in the wrong forum? (the C/C++/MFC forum is for native code!).
|
|
|
|
|
Luc Pattyn wrote: I haven't found the right approach yet.
Nor me. You would think that a simple API call somewhere could do this.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
This will never work because sizeof() is evaluated by the compiler so it will tell you the size of a void* on the system that it is compiled on. I just tried a Google on this and there does not seem to be an obvious answer to do it programatically; maybe one of the other geeks here knows the answer.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
What i understand is that you want to know that is OS is 32 bit or 64 bit...
BOOL XYZ::Is64BitOS()
{
SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
if((sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) || (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64))
return TRUE;
return FALSE;
}
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Hey thanks, you got it correct but somehow the code did not worked, but i googled with your input and found an alternative which worked.
BOOL Is64BitWindows()
{
#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64
#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
// so must sniff
BOOL f64 = FALSE;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
return FALSE; // Win64 does not support Win16
#endif
}
Thanks a lot.
|
|
|
|
|
Most Welcome
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
This is still wrong! If you compile this code on a system where _WIN64 is defined then the generated code will return TRUE from the Is64BitWindows() function. However if you then run that same code on a 32 bit system it will still return TRUE and your program will most likely fail. You need to understand the difference between compile time and run time tests.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
<blockquote class="FQ"><div class="FQA">Richard MacCutchan wrote:</div>This is still wrong! If you compile this code on a system where _WIN64 is defined then the generated code will return TRUE from the Is64BitWindows() function</blockquote>
The _WIN64 macro is a Microsoft compiler option that indicates that the code is being compiled for 64 bits.
The following link says that is what it is.
http://msdn.microsoft.com/en-us/library/b0084kay.aspx[^]
So excluding someone using that macro incorrectly (if even possible) the compiled code would then be compiled to run on 64 bits.
And a 64 bit application won't run on a 32 bit machine - right?
So what would be the situation where it returns an incorrect result?
|
|
|
|
|
jschell wrote: And a 64 bit application won't run on a 32 bit machine - right?
Correct.
jschell wrote: So what would be the situation where it returns an incorrect result?
I'm not sure that I understand your question fully. However in the case above that I commented on, if the code is compiled on a system with _WIN64 defined, and then run on a 32 bit system, it wil return TRUE from that function thus thinking that it is on a 64-bit system. I have no idea what the outcome would be but I would expect it to fail at some point.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|