CodeView

Last updated

CodeView
Original author(s) David Norris
Developer(s) Microsoft
Initial release1985;36 years ago (1985)
Operating system MS-DOS
Platform x86
Type Debugger

CodeView is a standalone debugger created by David Norris at Microsoft in 1985 as part of its development toolset. [1] It originally shipped with Microsoft C 4.0 and later. It also shipped with Visual Basic for MS-DOS, Microsoft BASIC PDS, and a number of other Microsoft language products. [2] It was one of the first debuggers for MS-DOS to be full-screen oriented, rather than line-oriented (as Microsoft's predecessors DEBUG and SYMDEB or Digital Research's SID).

Contents

Overview

When running, CodeView presents the user with several windows that can be tiled, moved, sized and otherwise manipulated via the keyboard or mouse, with CodeView 4.x providing a richer interface. Some of the windows include:

Features

Creating symbolic debugging output, which allows memory locations to be viewed by their programmer-assigned name, along with a program database showing the source code line related to every computer instruction in the binary executable, is enabled by the command line switch -Zi given to the compiler, and -CO given to the linker. Variants like -Zs and -Zd provide lesser information, and smaller output files which, during the early 1990s, were important due to limited machine resources, such as memory and hard disk capacity. Many systems in those days had 8MB of memory or less.

CodeView handles all program models, including TINY, SMALL, COMPACT, MEDIUM, LARGE and HUGE, with TINY (DOS-based .COM files) having their symbolic debugger information stored in a separate file, with all of the other .EXE formats containing the symbolic information directly inside the executable. This often introduced a notable size increase, and it therefore became desirable for some developers to use #pragma switches within their C (and later C++) source code to prevent the majority of the application from having symbolic output, and instead limiting that output to only those portions which required it for current debugging.

CodeView version 3.x and 4.x introduced various transport layers, which removed some of the memory space limitations to this form of symbolic debugging. Typically the debugger runs in the lower 640KB memory space alongside the application being debugged, which greatly decreases the amount of memory available to the application being debugged. The transport layer allows only a stub to exist in main memory, while the bulk of the debugger code resides in EMS or XMS (memory above the 1 MB barrier, or outside of the normal 0 KB - 640 KB address space typically used by DOS programs). CodeView also came with a CVPACK command-line utility, which can reduce the size of the CodeView-generated information internally, while still retaining full symbolic access to data.

Visual C++ support

Microsoft released Visual C++ 1.0 with CodeView functionality integrated directly into a single programming environment, known as the Integrated Development Environment (IDE) -- though CodeView was still available in the 16-bit versions of Visual C++. QuickC and a number of other development tools in the 'Quick' series also supported this move to a single-source IDE, what became the precursor to the modern Visual Studio developer environment, as well as the model for countless other developer toolsets.

This integration was seen by many developers as a more natural way of developing software because both coding and debugging could be handled without switching programs or context, and all from the same logical location (even though internally many separate programs were running to support editing, compiling and debugging). As a result, most development tools and/or platforms offer similar products or features.

Today, the debugger is considered an integrated and essential part of the Microsoft Visual Studio family of products, and owes its true roots to CodeView, and the enhancements seen in version 4.x specifically.

Symdeb

Another debugging product available from Microsoft in the mid-1980s was SYMDEB. [3]

It had over 30 commands, and was described by PC Magazine as a step up from DEBUG. [4] Codeview in turn was described as "a fullscreen SYMDEB". [5] [6]

See also

Related Research Articles

VBScript is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers with error handling, subroutines, and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.

Debugger Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its operations in progress and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

A terminate-and-stay-resident program is a computer program running under DOS that uses a system call to return control to DOS as though it has finished, but remains in computer memory so it can be reactivated later. This technique partially overcame DOS's limitation of executing only one program, or task, at a time. TSRs are used only in DOS, not in Windows.

Video Graphics Array Computer display standard and resolution

Video Graphics Array (VGA) is a video display controller and accompanying de facto graphics standard, first introduced with the IBM PS/2 line of computers in 1987, which became ubiquitous in the PC industry within three years. The term can now refer to the computer display standard, the 15-pin D-subminiature VGA connector, or the 640×480 resolution characteristic of the VGA hardware.

The Graphics Device Interface (GDI) is a legacy component of Microsoft Windows responsible for representing graphical objects and transmitting them to output devices such as monitors and printers. Windows apps use Windows API to interact with GDI, for such tasks as drawing lines and curves, rendering fonts, and handling palettes. The Windows USER subsystem uses GDI to render such UI elements as window frames and menus. Other systems have components that are similar to GDI; for example: macOS has Quartz and X.Org Server has X Window System.

Microsoft Visual C++ Integrated development environment product by Microsoft

Microsoft Visual C++C) is a compiler for the C, C++ and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and .NET.

NTLDR is the boot loader for all releases of Windows NT operating system up to and including Windows XP and Windows Server 2003. NTLDR is typically run from the primary hard disk drive, but it can also run from portable storage devices such as a CD-ROM, USB flash drive, or floppy disk. NTLDR can also load a non NT-based operating system given the appropriate boot sector in a file.

Conventional memory First 640K of RAM under DOS

In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system and application programs. As memory prices rapidly declined, this design decision became a limitation in the use of large memory capacities until the introduction of operating systems and processors that made it irrelevant.

Text-based user interface Type of interface based on outputting to or controlling a text display

In computing, text-based user interfaces (TUI), is a retronym describing a type of user interface (UI) common as an early form of human–computer interaction, before the advent of graphical user interfaces (GUIs). Like GUIs, they may use the entire screen area and accept mouse and other inputs. They may also use color and often structure the display using special graphical characters such as ┌ and ╣, referred to in Unicode as the "box drawing" set. The modern context of use is usually a terminal emulator.

IBM TopView Former front-end to DOS

TopView is the first object-oriented, multitasking, and windowing, personal computer operating environment for PC DOS developed by IBM, announced in August 1984 and shipped in March 1985. TopView provided a text-mode operating environment that allowed users to run more than one application at the same time on a PC. IBM demonstrated an early version of the product to key customers before making it generally available, around the time they shipped their new PC AT computer.

Windows Console

Windows Console is the infrastructure for console applications in Microsoft Windows. An instance of a Windows Console has a screen buffer and an input buffer. It allows console apps to run inside a window or in hardware text mode. The user can switch between the two using the Alt+↵ Enter key combination. The text mode is unavailable in Windows Vista and later. Starting with Windows 10, however, a native full-screen mode is available.

Mathomatic

Mathomatic is a free, portable, general-purpose computer algebra system (CAS) that can symbolically solve, simplify, combine, and compare algebraic equations, and can perform complex number, modular, and polynomial arithmetic, along with standard arithmetic. It does some symbolic calculus, numerical integration, and handles all elementary algebra except logarithms. Trigonometric functions can be entered and manipulated using complex exponentials, with the GNU m4 preprocessor. Not currently implemented are general functions like f(x), arbitrary-precision and interval arithmetic, and matrices.

Debug (command) Line-oriented debug utility in DOS

The line-oriented debugger DEBUG is an external command in operating systems such as DOS, OS/2 and Windows.

The Microsoft Windows operating system supports a form of shared libraries known as "dynamic-link libraries", which are code libraries that can be used by multiple processes while only one copy is loaded into memory. This article provides an overview of the core libraries that are included with every modern Windows installation, on top of which most Windows applications are built.

Windows 1.0x Operating system by Microsoft; the first version of Microsoft Windows

Windows 1.0 is a graphical operating environment for personal computers, developed by Microsoft. Microsoft had worked with Apple Computer to develop applications for Apple's 1984 original Macintosh, the first mass-produced personal computer with a graphical user-interface (GUI) that enabled users to see user-friendly icons on screen. Microsoft released Windows 1.0 on November 20, 1985, as the first version of the Microsoft Windows line. It is a type of software that runs as a graphical, 16-bit multi-tasking shell on top of an existing MS-DOS installation, providing an environment which can run graphical programs designed for Windows, as well as existing MS-DOS software. Microsoft's founder Bill Gates spearheaded the development of Windows 1.0 after he saw a demonstration of a similar software suite, Visi On, at COMDEX in 1982.

The LLDB Debugger (LLDB) is the debugger component of the LLVM project. It is built as a set of reusable components which extensively use existing libraries from LLVM, such as the Clang expression parser and LLVM disassembler. LLDB is free and open-source software under the University of Illinois/NCSA Open Source License, a BSD-style permissive software license. Since v9.0.0, it was relicensed to the Apache License 2.0 with LLVM Exceptions.

Mono (software) Computer software project

Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.

References

  1. "CodeView 3.x". WinWorld.
  2. 1 2 Microsoft Macro Assembler 5.1 - Microsoft CodeView and Utilities. Microsoft Corporation. 1987. p. 157. Document No. 4108-40010-500-R03-1287.
  3. Par, Jeff (2018-02-25). "A Short History of SYMDEB". PCjs Machines. Retrieved 2019-05-19.
  4. "SYMDEB: A step up from Debug". PC World . 1986-10-14. p. 296.
  5. "SYMDEB". PC Magazine . Vol. 5 no. 17. Ziff Davis, Inc. 1986-09-30. p. 38. ISSN   0888-8507.
  6. "MS C 4.0 Documentation Added". OS2museum.com.
  7. "CodeView Type Records — LLVM 13 documentation". llvm.org. Retrieved 2021-12-19.

Further reading