Problem with CString! CXX0017
-
Did you use your debugger to see on which line of code it crashes (if needed, use the call stack to see in which of your function it crashes).
Cédric Moonen Software developer
Charting controlCedric Moonen wrote:
Did you use your debugger to see on which line of code it crashes (if needed, use the call stack to see in which of your function it crashes).
But I can see what the error is, because when I use the debugger I don't have a value for str2, it says "symbol not found". But why does this happen? Does it have anything to do with multithreading?
-
Cedric Moonen wrote:
Did you use your debugger to see on which line of code it crashes (if needed, use the call stack to see in which of your function it crashes).
But I can see what the error is, because when I use the debugger I don't have a value for str2, it says "symbol not found". But why does this happen? Does it have anything to do with multithreading?
It's not because you can't see the value of str2 that you are not able to see where your program crashes. Maybe you are trying to watch str2 out of its scope. It can only be watched if you have a breakpoint in the function where it is declared. Outside it, its not visible.
Cédric Moonen Software developer
Charting control -
Cedric Moonen wrote:
Did you use your debugger to see on which line of code it crashes (if needed, use the call stack to see in which of your function it crashes).
But I can see what the error is, because when I use the debugger I don't have a value for str2, it says "symbol not found". But why does this happen? Does it have anything to do with multithreading?
When you get an assert, the first step is to break into the code. If you can't work out what's wrong, the next step is to post the line number and even the actual line of code that's causing the assert. We need the line number and file as well, if we're to see it in context.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
It's not because you can't see the value of str2 that you are not able to see where your program crashes. Maybe you are trying to watch str2 out of its scope. It can only be watched if you have a breakpoint in the function where it is declared. Outside it, its not visible.
Cédric Moonen Software developer
Charting controlCedric Moonen wrote:
Maybe you are trying to watch str2 out of its scope. It can only be watched if you have a breakpoint in the function where it is declared. Outside it, its not visible
But I try to watch the variable str2 inside the function and I can't. I know what ur trying to say, that's why I asked you if it's because of the multihtreading, is that why I can't see it's value?
-
When you get an assert, the first step is to break into the code. If you can't work out what's wrong, the next step is to post the line number and even the actual line of code that's causing the assert. We need the line number and file as well, if we're to see it in context.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
Christian Graus wrote:
We need the line number and file as well, if we're to see it in context.
File wincore.cpp Line 883.
-
Christian Graus wrote:
We need the line number and file as well, if we're to see it in context.
File wincore.cpp Line 883.
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
Cédric Moonen Software developer
Charting control -
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
Cédric Moonen Software developer
Charting controlCedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
-
Christian Graus wrote:
We need the line number and file as well, if we're to see it in context.
File wincore.cpp Line 883.
tanarnelinistit wrote:
File wincore.cpp Line 883.
This is apparently not with VC++ v6. Correct?
"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
-
Cedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
tanarnelinistit wrote:
if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi";
Put a breakpoint on the
if
statement and single-step (F10) from there.
"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
-
I use the folowing code to listen the com:
void CMina_sView::OnListenCom1() { running = TRUE; AfxBeginThread(run,this); }
void CMina_sView::ascultarea() { CSerial serial; LONG lLastError = ERROR_SUCCESS; DWORD dwBytesRead = 0 ; char szBuffer[21]; CString str2="jjk"; char of[5]= "Addd"; int i=10; const int nBuflen = sizeof(szBuffer)-1; lLastError = serial.Open(_T("COM1"),0,0,false); lLastError = serial.Setup(CSerial::EBaud9600,CSerial::EData8,CSerial::EParNone,CSerial::EStop1); lLastError = serial.SetMask(CSerial::EEventBreak | CSerial::EEventCTS | CSerial::EEventDSR | CSerial::EEventError | CSerial::EEventRing | CSerial::EEventRLSD | CSerial::EEventRecv); lLastError = serial.SetupReadTimeouts(CSerial::EReadTimeoutNonblocking); lLastError = serial.WaitEvent(); const CSerial::EEvent eEvent = serial.GetEventType(); if (eEvent & CSerial::EEventRecv) { while (running) {Sleep(300); dwBytesRead = 0; serial.Read(szBuffer,nBuflen,&dwBytesRead); szBuffer[dwBytesRead] = '\0'; str2.TrimLeft(); str2.TrimRight(); str2.TrimLeft(); str2.TrimRight(); // do smth with str2 } } //Sleep(0); running = FALSE; serial.Close(); } UINT CMina_sView::run(LPVOID p) { CMina_sView * me = (CMina_sView *)p; me->ascultarea(); return 0; }
If I run the program I get an error. If I run it in debug mode I when try to watch str2 i get the error: "symbol "str2" not found" What's wrong? I can watch any other variable.IME, symbol "str2" not found errors in the debugger are due to one of four things:
1
: You typed the identifier incorrectly2
: You are in the wrong context3
: You are trying to view astatic
variable (VC++ 6.0)4
: You have overrun/underrun a buffer Given that you are also getting additional errors, I would research #4
. Peace!-=- James
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
DeleteFXPFiles & CheckFavorites (Please rate this post!) -
tanarnelinistit wrote:
File wincore.cpp Line 883.
This is apparently not with VC++ v6. Correct?
"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:
This is apparently not with VC++ v6. Correct?
No, it is with VC++ v6.0. The error is comming from using the str2 CString variable. If I dont use any reference to it there is no problem.
-
IME, symbol "str2" not found errors in the debugger are due to one of four things:
1
: You typed the identifier incorrectly2
: You are in the wrong context3
: You are trying to view astatic
variable (VC++ 6.0)4
: You have overrun/underrun a buffer Given that you are also getting additional errors, I would research #4
. Peace!-=- James
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
DeleteFXPFiles & CheckFavorites (Please rate this post!)James R. Twine wrote:
You have overrun/underrun a buffer
What do you mean by that? If I don't use multithreads I don't get an error.
-
Cedric Moonen wrote:
Use the callstack to see in which of YOUR function the code crashes. Then put a breakpoint at the begining of this function and step by step to see which instruction makes your program crash.
The line that makes my program crash: if (str2=="FFFF00000000028C") m_pSet->m_Nume="Gigi"; else m_pSet->m_Nume="Ionica"; Because that's a line on which I have str2 the variable that is defined and initiated with a value, but which I can't see. -- modified at 8:53 Wednesday 26th July, 2006
Where does this code come from ?? :confused: Please, when you post something give the complete information. This has absolutely nothing to do with the first code snippet you posted. So how can we guess what the problem is :| ? What is this m_pSet and what is its value ? Is it a valid address ?
Cédric Moonen Software developer
Charting control -
James R. Twine wrote:
You have overrun/underrun a buffer
What do you mean by that? If I don't use multithreads I don't get an error.
tanarnelinistit wrote:
If I don't use multithreads I don't get an error.
Most likely the problem is still present and is simply being masked by some other operation.
"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:
This is apparently not with VC++ v6. Correct?
No, it is with VC++ v6.0. The error is comming from using the str2 CString variable. If I dont use any reference to it there is no problem.
tanarnelinistit wrote:
No, it is with VC++ v6.0.
Line 883 of wincore.cpp does not have any
ASSERT()
statements. Here are the first few lines of code in theAssertValid()
method:#ifdef _DEBUG
void CWnd::AssertValid() const
{
if (m_hWnd == NULL)
return; // null (unattached) windows are valid// check for special wnd??? values ASSERT(HWND\_TOP == NULL); // same as desktop if (m\_hWnd == HWND\_BOTTOM) ASSERT(this == &CWnd::wndBottom); else if (m\_hWnd == HWND\_TOPMOST) ASSERT(this == &CWnd::wndTopMost); else if (m\_hWnd == HWND\_NOTOPMOST) ASSERT(this == &CWnd::wndNoTopMost); else // line 883
...
"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
-
tanarnelinistit wrote:
If I don't use multithreads I don't get an error.
Most likely the problem is still present and is simply being masked by some other operation.
"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:
Most likely the problem is still present and is simply being masked by some other operation.
With all respect it can not be posible to have the problem when I don't use multithreads because i use str2 to edit a field in the database and that works fine. I run the program just fine.