- [DONE] Correct signal handling commands for lldb
- [DONE] Correct environment variable setting commands for lldb

- [DONE] Port DebugJob
- [DONE] Port exam core and attach process to KJob
- [DONE] Move DebuggerPlugin to MIDebuggerPlugin

- [DONE] Verify how unit test works in test_gdb
- [DONE] Create minimal unit test cases to be able to test debugger and debugsession
    + [DONE] can break on start
    + [DONE] environment var successfully set
    + Check if environment-cd works in remote debugging
    + [DONE] Check if lldb supports unicode correctly
        * [DONE] a program output in encoding other than utf8 and different from host system default
    + Make examine core test working with coredumpctl

- [DONE] Verify MIParser/MILexer can handle output without any stream prefix: no they can't

- [DONE] Make config options in config page actually working

- [DONE] Remove duplicate breakpoint: look at breakpointController()->setDeleteDuplicateBreakpoints(true)

- [DONE] Rework interrupt action

- [DONE] (only workaround) Variables view doesn't update when variable changes

- Add lldb actions for attach to process and examine core file
- Clean up extra actions provided by gdb/lldb plugins
    * Global launch configuration for attach to process and examine core file

- LLDB data formatters
    * [DONE] show summary for const char []
    * Qt types
        + [DONE] QString, QChar
        + [DONE] QByteArray
        + [DONE] QList, QStringList, QQueue
        + [DONE] QVector, QStack
        + [DONE] QLinkedList
        + [DONE] QMap, QMultiMap
        + [DONE] QHash, QMultiHash
        + [DONE] QSet
        + [DONE] QDate, QTime, QDateTime
        + [DONE] QUrl
        + [DONE] QUuid
    * KDE types
        + [DONE] KDevelop::Path
        + [DONE] KTextEditor::Cursor
        + [DONE] KTextEditor::Range
    * lldb-mi doesn't properly quote string in most MI records, so can't use \\ or " in names
- Finish unit tests for LLDB data formatters
- Qt data formatter cause hangs data size is too large
    * [DONE] use dynamic caching
    * invalid object detect

- [DONE] Show application exit reason in the Debug View

- Clean up tool views
    * register views
        + controller
        + tool view
    * disassembly widget
    * memory view

- [DONE] Find a way to avoid duplicate tool views for GDB and LLDB plugin

- Polish debugger console
    * [DONE] user command output regarded as internal command
    * [DONE] not correctly raised when starting debug
    * [DONE] correct prompt (from "(gdb)" to "(lldb)")

- [DONE] Handle error sometime with Command 'exec-run'. Invalid process during debug session.

- An unified way to report error

- File bug to lldb-mi
    * HIGH PRIORITY: -break-insert
        + [SUBMITTED] pending breakpoints set with '-f' not got resolved after file loaded
            - https://llvm.org/bugs/show_bug.cgi?id=28702
        + [SUBMITTED] pending breakpoints '-f' can only be last flag switch
            - https://llvm.org/bugs/show_bug.cgi?id=28698
        + [SUBMITTED] create disabled breakpoint with '-d' not working when combined with '-f'
            - https://llvm.org/bugs/show_bug.cgi?id=28703
        + [SUBMITTED] -break-enable has no effect
            - https://llvm.org/bugs/show_bug.cgi?id=28857
    * [SUBMITTED] breakpoint hit doesn't generate corresponding breakpoint-modified notification
        - https://llvm.org/bugs/show_bug.cgi?id=28860
      (needed to update hitCount)
    * -break-watch command not supported
        + use raw cli command 'break set var' doesn't provides MI response
    * when hit watch point, nothing is output, which confuses the controller
    * thread-info returns malformated result
        + there should be only one 'frame' key for each thread in the list
        + [FIXED] there should be a current-thread-id field (Fixed at least in revision 265858)
    * [FIXED] lldb-mi crashes when break on a point where multiple threads running. (Fixed at least in revision 265858)
    * var-update doesn't support * as variable name
    * can't have space in environment cd
    * -inferior-tty-set only has dummy implementation
    * 'process launch' doesn't provide thread-group-started notification
    * [SUBMITTED] silently stop when attaching to process, which confuses the controller
        - https://llvm.org/bugs/show_bug.cgi?id=28858
    * [SUBMITTED] silently stop when request stop at start
        - https://llvm.org/bugs/show_bug.cgi?id=25000
    * [SUBMITTED] [PATCHED] cli output not wrapped in console stream record
    * [SUBMITTED][PATCHED] -data-disassemble start and end address parameter doesn't accept expressions
        - https://llvm.org/bugs/show_bug.cgi?id=28859
    * -gdb-set not fully implemented
        + environment
        + [SUBMITTED] [PATCHED] disassembly-flavor
            - https://llvm.org/bugs/show_bug.cgi?id=28718
    * -gdb-show not fully implemented
        + [SUBMITTED] [PATCHED] disassembly-flavor
            - https://llvm.org/bugs/show_bug.cgi?id=28718
    * -data-list-register-values output format doesn't conform to spec
    * [SUBMITTED] -stack-list-locals shows empty list
        - https://llvm.org/bugs/show_bug.cgi?id=28621
    * File bug to lldb-mi for other missing commands

- Fix TODOs in files

- Change test_gdb to avoid direct use of QTest::qWait, which starts event loop, and could cause session to
  be deleted. Use WAIT_FOR_STATE_AND_IDLE(session, <previous state>) instead. Or use QPointer for session.

- Known issues
    * Debugger console
        + debugger CLI stdout isn't shown, due to bug https://llvm.org/bugs/show_bug.cgi?id=28026
    * Remote debugging
        + When using 'lldb-server gdbserver' as remote server, server exits once debug session ended.
        + When using 'gdbserver' as remote server
            - Remote work path can't contain space
            - Can't actually start inferior
    * Breakpoints
        + Pending breakpoints doesn't work. (Break on start now works even without pending breakpoint support)
            - Can still manually set pending breakpoints
        + Breakpoint hit count is not updated timely (limitation in lldb-mi)
        + No watchpoint support
            - Can still manually add watch point
    * Threads
        + lldb-mi crashes when break on a point where multiple threads running. (Fixed in latest lldb trunk version)
    * Attach to process
        + works internally, but there's no way to access it in the UI currently.

relevant lldb settings:

disassembly-format
thread-format
frame-format
