On VxWorks you should use the wddebug.out utility. Its usage is similar to the wddebug command line utility on Windows, Solaris, Linux, etc (see Technical Document #13). There is no GUI version for VxWorks.
You need to do the following:
- Load the program wddebug.out into your memory.
- Call wddebug_main. This will give you usage instructions.
- Call wddebug_main with parameters:
wddebug_main "on", "trace", "all"
This activates the Debug Monitor
- Call wddebug_main dump.
Now the program will continuously dump debug messages, until you press ENTER. You won't get the shell prompt back (until you press ENTER) so you need to start a new shell to work with your target.
The source code for wddebug.out is found in: DriverBuilder/samples/wddebug/wddebug.c.
To ensure the correct usage of the debug utility, you can either add the source code to your application (changing, of-course, the name of the main() function in the source code); Or preferably, add the following two function definitions to your code and call them from main(), in order to activate the debug utility:
int debug_start()
// Call this function after the call to
// drvrInit(), in order to instruct the
// kernel to start sending debug messages:
{
WD_DEBUG debug;
HANDLE hWD = WD_Open();
if(hWD==INVALID_HANDLE_VALUE)
return -1;
BZERO(debug);
debug.dwCmd = DEBUG_SET_FILTER;
debug.dwLevel = D_TRACE;
debug.dwSection = (DWORD)S_ALL;
WD_Debug(hWD, &debug);
return 0;
}
int debug_dump()
// Call this function at the end of main(),
// after the system as booted and you get
// your shell. This function causes the debug
// messages that have been sent to be displayed
// of in the debug log:
{
WD_DEBUG_DUMP debugDump;
char buf[2048];
HANDLE hWD = WD_Open();
if(hWD==INVALID_HANDLE_VALUE)
return -1;
BZERO(debugDump);
debugDump.pcBuffer = buf;
debugDump.dwSize = sizeof (buf);
WD_DebugDump(hWD, &debugDump);
printf("%s", debugDump.pcBuffer);
return 0;
}
Back to Top
|