C++ simple question

I am using uVision 4.21 MDK_ARM to learn how to program C++ on MCB1700.

I have create a new project and add 2 files (startup_CPL17xx.s / system_LPCxx.c) to startup group. Then I add main.cpp to Sources Files group. The project options are:

Device: LPC 1768
Target: Default
Output: Default
Listing: Default
User: Default
C++: Default
Asm: Default
Linker: Default
Debug: Use ULINK Cortex Debugger
Utilities: Default

Then I change the startup_LPC17xx.s
Stack Size: 0x0000 1000
Heap Size: 0x0000 1000

My main.cpp code:

#include <vector>
#include <string>

int main (void)
{
  int i = 0;
  int sum = 0;
  std::vector<int> vInt;
  std::string str = "Hello, C++";

  vInt.push_back(1);
  vInt.push_back(2);
  vInt.push_back(3);
  vInt.push_back(4);
  vInt.push_back(5);

  sum = vInt.size();
  sum = 0;
  for(i=0; i<5; i++)
  {
    sum += vInt[i];
  }
  while(1);
  //return 0;
}


I build the project successfully and download it to MCB1700 board "OK". Then I hit "F9" to set break point at line "vInt.push_back(1);". After I select Debug->Start Debug Session, the break point is not reached even I hit "F5" many times. Why?

By the way, I find there are 2 windows: Disassembly Window and Code Window (for main.cpp). How could I step through the code on C++ source code level and how could I step through the code on Assembly level?

Parents
  • To answer your second question: set the cursor in the Disassembly window to step at the assembly level, set it in the source window to step at the source level. You can also close the Disassembly window and then it will step source.

    The first question is hard to answer without seeing exactly what's going on in your debugger. One trap I fell in a few times is having simulation selected instead of the actual hardware debugger. Make sure "Use simulator" isn't selected in "Options|Debug".

    Also, make sure no optimizations are switched on in "Options|C/C++" (-O0) - that makes it a lot easier to do source-level stepping.

    Once you have that try stepping through your entire program instead of trying to set a breakpoint.

    Also, I would set breakpoints after going into debug mode to be sure they really get set.

    Andrew

Reply
  • To answer your second question: set the cursor in the Disassembly window to step at the assembly level, set it in the source window to step at the source level. You can also close the Disassembly window and then it will step source.

    The first question is hard to answer without seeing exactly what's going on in your debugger. One trap I fell in a few times is having simulation selected instead of the actual hardware debugger. Make sure "Use simulator" isn't selected in "Options|Debug".

    Also, make sure no optimizations are switched on in "Options|C/C++" (-O0) - that makes it a lot easier to do source-level stepping.

    Once you have that try stepping through your entire program instead of trying to set a breakpoint.

    Also, I would set breakpoints after going into debug mode to be sure they really get set.

    Andrew

Children
More questions in this forum