The strip of tabs across the bottom of the LingCode window — Problems, Output, Run Console, Console, Terminal, Debug Console, Test Results, REST Client, Ports — is where the IDE tells you what just happened. The hard part isn't any one tab; it's that four of them look like "logs" and people pick the wrong one. This page gives you the mental model first, then a one-line job for each of the nine tabs.
Every tab in the bottom panel answers a different question — did my code compile?, what did my app print?, what is the OS saying?, where is execution paused? When you know which question a tab answers, you stop hunting. The panel itself is one shared dock: click a tab to switch, and drag the divider above it to resize (it grows and shrinks between a short and a tall height, so you can give a noisy build log more room without losing your editor).
This is the confusion worth clearing first. Output, Run Console, Console, and Debug Console all scroll text at you, so they feel interchangeable. They are not — each one is wired to a different source:
| Tab | Answers | Source of the text |
|---|---|---|
| Output | Did my code compile? | The build — compiler / xcodebuild / Gradle output, with errors and warnings parsed out. |
| Run Console | What did my app print? | Your running program's own stdout / stderr — your print()s and crashes. |
| Console | What is the system saying? | Device / simulator system logs — iOS Simulator, My Mac, or Android Logcat — with OS-level severity levels. |
| Debug Console | Where is execution paused? | The debugger — lldb-dap on Apple, JDWP/DAP on Android — plus low-level diagnostic logs. |
Rule of thumb: a red error in Output means it didn't build; a red line in Run Console means it built and then your app complained; noise in Console is usually the OS, not you; and you only live in Debug Console when you've hit a breakpoint or are typing debugger commands.
A single, sortable list of every error and warning in your project — both compiler diagnostics from the last build and live language-server (LSP) diagnostics as you type. Filter by severity (Error / Warning / Info) or by source (LSP vs. Build), click any row to jump straight to the offending line, copy the whole visible list to paste into chat, or run "Clean Up Unused" to apply LSP quick-fixes for unused symbols. Think of Problems as the index of what's wrong; Output is the raw transcript behind it.
Full integrated shell terminals — the same bash/zsh you'd use in Terminal.app, but inside the IDE. It's multi-tab, and tabs can be split left/right or top/bottom so you can watch a dev server in one pane and run commands in another. Select any text and an "Add to Chat" action lets you hand terminal output to the agent; right-click a selection to "Explain with AI". This tab stays mounted underneath the others so long-running processes keep going when you switch away.
After you run tests, this tab shows each one as pass / fail / skip with its duration, filterable by status with live counts. Failure messages turn the stack-frame paths into clickable links that jump to the exact source line, and a coverage toggle overlays which lines your tests actually exercised. See the dedicated tutorial below.
A visual HTTP client built into the IDE — pick a method, type a URL, set headers and a body, hit Send, and read a syntax-friendly response with status, timing, and size. It keeps a short history of recent requests. This is the tab in most "what does this button do?" screenshots; the deep dive below walks through a real request.
A live list of local ports — your dev servers and forwarded ports — showing which are actively listening, what process owns them, and a one-click globe button to open http://localhost:<port> in your browser. You can also add a port by hand to keep an eye on it. Covered in detail below.
Three of these tabs reward a closer look. The other six you now know well enough to reach for the right one.