PRB: CodeView May Appear to Hang on gets() If Screen Swap Is OffLast reviewed: July 17, 1997Article ID: Q62663 |
3.00 3.11 3.14 4.00 4.01 4.05 4.10 | 3.00 3.11 3.12 3.50
MS-DOS | OS/2kbtool kbcode kbprb The information in this article applies to:
SYMPTOMSThe Microsoft CodeView Debugger will appear to hang when you step or execute past a call to the gets() run-time routine if the Screen Swap option is turned off.
CAUSEThe apparent lock-up results because the gets() call causes focus to shift to the debuggee's screen and there is no way for CodeView to get to that screen with Screen Swap off. Since in MS-DOS, the debuggee's screen still displays CodeView, you may be able to type in the information and press Return to continue. This will temporarily display the debuggee's input over CodeView's screen. A better method in MS-DOS is to break execution with CTRL+C so that you may turn swapping back on.
RESOLUTIONTo get past this deadlock with CVP under OS/2, manually switch screen groups to the one labeled "CVP app appname.EXE". Once there, you can provide a response to the waiting gets() call. After entering a string, you can switch back to the screen group running CVP and continue debugging.
MORE INFORMATIONThe sample code below illustrates this situation. Compile the code as indicated and bring up the .EXE in CodeView. Select the Option menu and turn off Screen Swap if it is on. Next, step past the gets() call. In MS-DOS, you will need to press CTRL+C to regain control. In OS/2, you will need to switch screen groups to provide the necessary input to the program.
Sample Code
/* Compile options needed: /Zi /Od */ #include <stdio.h> char string[256]; void main (void){ printf ( "Enter a string: ") ; gets ( string ) ; printf ( "Echoing : %s\n", string) ;}
|
Additional reference words: 3.00 3.50 4.00 4.10
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |