|
Remember to enable the debug info for the compiler and the linker.
On MSVC6 follow these steps on your release build:
1. Select "Project->Settings..."
2. Select "C/C++" tab.
3. In the "Category:" combo select "General".
4. In the "Debug info:" combo select "Program Database". We don't use the edit and continue option in a release build.
5. Select the "Link" tab.
6. In the "Category:" combo select "Debug".
7. In the "Debig Info" group tick "Debug info", "Microsoft format" and "Seperate types".
If your using a later version you'll have to adapt these steps.
Steve
|
|
|
|
|
Hi,
I generated the debug info (PDB file) for my release exe. But when I use it on the simulation computer with WinDbg, it keeps on saying:
*** ERROR: Symbol file could not be found. Default...
although I specified the "symbol file path" to be the correct one (I think). What am I doing wrong?
...and you were right, because windbg indicates:
HEAP[FMCT.exe]: Invalid allocation size - AC1905B4 (exceeds 7ffdefff)
But I do not know where that is without the trace of the code...
|
|
|
|
|
First locate the .PDB file. It should be in the same directoy as the .EXEs in. Enter the path of the directory that contains it in the symbol file path. You shouldn't need to do this however. Are you sure you've got the PDBs?
Steve
|
|
|
|
|
Stephen Hewitt wrote: You shouldn't need to do this however. Are you sure you've got the PDBs?
Yes I'm sure. But here the exact configuration I use: first I compile the code on my laptop (Intel proc) with all the compiling options you mentioned for debugging (although I could not find any option in .NET 2003 for the "Microsoft format" and "Seperate types" for debugging info). Then I copy the EXE and PDB files on the AMD machine and run WinDbg on the AMD: I launch WinDbg, set the symbol file path, then use the command Open Executable and select my EXE, and specifiy the running directory of my EXE (which is different from the location of the PDB file). Is there something wrong in what I'm doing?
Thanks again.
|
|
|
|
|
Hi there,
That's it, I fixed it. Actually, I was mislead by the first debugger comment when opening the EXE. It said that it could not locate the SYMBOL info, but later when it crashed, it correctly reported the error using the PDB (and source code?) I put in the Symbol folder.
Okay, thanks very much for your help. I hope next time I have a crash in my RELEASE I will be able to find the exact reason... althgouh now I've chanegd my code to run in Multi-Thread ... so debugging is even more complicated.
By the way I have a question about multi-threading, are you familiar with it?
-Lyu ABE
|
|
|
|
|
Somewhat....What's your question?
Steve
|
|
|
|
|
Humm.. I was about to ask why one of my two threads was finishing the job much before the other (they are performing the same task, but on separate memory spaces, so no lag due to access to shared ressources). Then I realized it was because I used a (stupid) while to wait for some bool flags in each thread to be set to true, and the laggy thread was running on the same core than the main program. That's why it was slown down. Now I'm using Events to signal the state of the thread, using CreateEvent , SetEvent and ResetEvent . I have the same crashing issue on the AMD proc . It runs fine on the Intel laptop, but crashes on the AMD (both with RELEASE EXEs). (if you have suggestions, they are welcome...)
Anyway, I am now wondering if these multithread functions _beginthread , etc. are portable to other platforms (i.e. is that standard C++)??
|
|
|
|
|
I found why the code crashed on the AMD machine: it is because I got this strange crashing issue (the origin of my message). But now what is puzzling me is that when I use WinDbg to launch the EXE, it runs fine, but when I use console command, it crashes . Any explanation to that?
|
|
|
|
|
Okay, I guess I've found the cause of the crash: I was not freeing some (small) arrays in one of my subroutines... However, it seems strange to me that it made my code crash. I thought that if it was not freed, then the memory space was just allocated and not available to other allocation during the code execution...
Anyway, I got it solved, so I'm happy
Thanks all for your suggestions to this thread.
Lyu ABE
|
|
|
|
|
Hi,
Can u please help me to solve the problem.
I have two property pages in a property sheet.
The first one is CCmpListSetupDlg
and the second one is CCmpDataEntryDlg.
In the first propertypage i am getting a string into the variable "str".
BOOL CCmpListSetupDlg::OnKillActive()
{
CString str;
// I used CListCtrl two create grid lines and when user click on a row(item)
// i am getting the text value into the CString variable "str"
CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LISTITEMS);
POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
if (pos == NULL)
{
AfxMessageBox("No items were selected!\n");
}
else
{
while (pos)
{
nItem = pListCtrl->GetNextSelectedItem(pos);
str=pListCtrl->GetItemText(nItem,0);
AfxMessageBox(str);
return CPropertyPage::OnKillActive();
}
}
}
//This is my second property page
//When ever my second property page is activated i want the text
//value of "str" to get displayed .
BOOL CCmpDataEntryDlg::OnSetActive()
{
AfxMessageBox("Hi Dataentry page is active");
// here str value should be displayed.
return CPropertyPage::OnSetActive();
}
Thanks in Advance.
|
|
|
|
|
tejaswini.g wrote: AfxMessageBox("Hi Dataentry page is active");
// here str value should be displayed.
return CPropertyPage::OnSetActive();
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
tejaswini.g wrote: AfxMessageBox("Hi Dataentry page is active");
// here str value should be displayed.
return CPropertyPage::OnSetActive();
is CPropertyPage* CPropertySheet::GetPage(int nPage) of any help!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Can u show me please How can I use it in my program.
|
|
|
|
|
|
www.codeguru.com/forum/showthread.php?t=394676">http://www.codeguru.com/forum/showthread.php?t=394676[
|
|
|
|
|
Hello,
i#m looking up and down the vc++-documentation to find an idea about listing all the files a local computer has opened on the network. I found numerous functions like 'NetFileEnum' but they only provide information about a number of open files and pipes. But i am interested in the names of the open files. Does anyone have an idea about this?
Thanks in advance,
Richard
|
|
|
|
|
Richard Ernstberger wrote: NetFileEnum
Richard Ernstberger wrote: But i am interested in the names of the open files. Does anyone have an idea about this?
I never tried, but you can use NetFileGetInfo with level as 3
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
ThatsAlok wrote: I never tried, but you can use NetFileGetInfo with level as 3
NetFileEnum() will work, too, using level 3. I'm unclear as to why the OP suggested otherwise.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
DavidCrow wrote:
NetFileEnum() will work, too, using level 3.
yeah.. it will work.. sorry i overlooked that!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Thanks for your response.
NetFileEnum is working in some cases.
This means: i can get open files on my local machine and on some Windows-2000-computers. XP-computers fail with the ERROR_ACCESS_DENIED code.
Another try with a NAS-device lets crash NetFileEnum, as it returns an errorcode that is not listed in the VC-docs.
I feel there are some restrictions on this function: maybe i have to change some network-settings on XP. And for the NAS-device: maybe there is no way to query a SMB-device.
If someone has experienc with this, it wold be nice to hear from you.
Thanks,
Richard
|
|
|
|
|
|
Hi, I dont have code for a 64 bit crc, but maybe this crc16 might help you.
Hope it will help.
Function:
short int crc16(int *pBuf, short int Len, short int InitialCrc){
short int crc=0, i=0;
crc = 0;
for (i = 0; i < Len; i++ ) {
crc = (crc >> 8) | (crc << 8);
crc = crc ^ *pBuf;
crc = crc ^ ((crc & 0xff) >> 4);
crc = crc ^ (crc << 12);
crc = crc ^ ((crc & 0xff) << 5);
pBuf++;
}
return(crc);
}
int main()
{
int *ibuf = new char[len];
short int crc;
Memo1->GetTextBuf(ibuf,len);
crc = crc16(&ibuf[0],len,0);
Edit2->Text = len;
Edit3->Text = IntToHex(crc,4);
delete[] ibuf;
}
Regards Programm3r
|
|
|
|
|
Programm3r wrote: Hi, I dont have code for a 64 bit crc, but maybe this crc16 might help you.
Hope it will help.
Thanks. I don't need code for Crc. I just need a widely used 64 bit Crc polynomial. Just like the ones we have for 32 bit Crc's.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
|
Programm3r wrote: Well in that case .... my bad .
Have you tried checcking google?
God bless you. I did search google. But these days you should search Wikipedia too. Just what I wanted.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|