Microsoft KB Archive/40784

From BetaArchive Wiki
Knowledge Base


CodeView Does Not Work with Grouped Code Segments

Article ID: 40784

Article Last Modified on 10/23/2003



APPLIES TO

  • Microsoft CodeView 4.1
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.0
  • Microsoft CodeView 4.0
  • Microsoft CodeView 4.01
  • Microsoft CodeView 4.01
  • Microsoft CodeView 4.1
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.0
  • Microsoft CodeView 4.1
  • Microsoft CodeView 4.1
  • Microsoft CodeView 4.1



This article was previously published under Q40784

Using the Microsoft Macro Assembler (MASM), it is possible to associate various segments into a group; DGROUP is an example of this technique. Grouped data or stack segments do not affect CodeView but CodeView does not recognize grouped code segments. The program will run correctly under CodeView but none of the CodeView functions will be available on the second and subsequent segments in the code group.

The sample code below illustrates this behavior. Once the program executes into the _TEXTB segment, all CodeView functionality is lost. You cannot set any breakpoints or single step through the _TEXTB code. Any attempt to single trace into _TEXTB will result in CodeView running all the code in _TEXTB as if you had specified a go or a step

Sample Code

; Assembler options needed: /Zi

        DOSSEG
_TEXT   GROUP   _TEXTA, _TEXTB         ; Code group _TEXT

_DATA   SEGMENT WORD PUBLIC 'DATA'
msg     DB      "Hello, world.", 13, 10, "$"
_DATA   ENDS

_TEXTA  SEGMENT WORD PUBLIC 'CODE'     ; First code segment - this
        ASSUME  cs:_TEXT,ds:_DATA      ;  code may be traced as
start:  mov     ax, _DATA              ;  expected.
        mov     ds, ax
        call    FAR PTR SayHi
        mov     ax, 4C00h
        int     21h
_TEXTA  ENDS

_TEXTB  SEGMENT WORD PUBLIC 'CODE'     ; You cannot trace through
SayHi   PROC                           ;  this code.
        mov     ah, 9h
        mov     dx, OFFSET msg
        int     21h
        ret
SayHi   ENDP
_TEXTB  ENDS

        END     start
        


Additional query words: kbinf 2.20 3.00 3.50 4.10

Keywords: kb16bitonly KB40784