Implement GDB pretty-printers for folly::fibers
authorAndrii Grynenko <andrii@fb.com>
Fri, 1 Apr 2016 00:57:14 +0000 (17:57 -0700)
committerFacebook Github Bot 5 <facebook-github-bot-5-bot@fb.com>
Fri, 1 Apr 2016 01:05:19 +0000 (18:05 -0700)
commitb1e4525138d3ca70bad85d990eda13d470637c32
tree9129ea4389c443f56c171c63e1a5cea42deea5cd
parent9a781ed447f583aecdce9b321329a55b90898aaa
Implement GDB pretty-printers for folly::fibers

Summary:This adds basic print functions for FiberManager, Fiber and FiberManager map.
It also adds a global list of fibers to FiberManager. Fibers are only removed from that list on Fiber object destruction, so it shouldn't have any perf impact.

Inspired by tao/server/scripts/fiber_bt.gdb

FiberManager map example:
  (gdb) print_folly_fiber_manager_map
    Global FiberManager map has 2 entries.
      (folly::EventBase*)0x7fffffffdb60 -> (folly::fibers::FiberManager*)0x7ffff5b58480
      (folly::EventBase*)0x7fffffffd930 -> (folly::fibers::FiberManager*)0x7ffff5b58300

FiberManager example:
  (gdb) print_folly_fiber_manager &manager
    (folly::fibers::FiberManager*)0x7fffffffdbe0

    Fibers active: 3
    Fibers allocated: 3
    Fibers pool size: 0
    Active fiber: (folly::fibers::Fiber*)(nil)
    Current fiber: (folly::fibers::Fiber*)(nil)

    Active fibers:
      (folly::fibers::Fiber*)0x7ffff5b5b000   State: Awaiting
      (folly::fibers::Fiber*)0x7ffff5b5b300   State: Awaiting
      (folly::fibers::Fiber*)0x7ffff5b5b600   State: Awaiting

Fiber example: P56244621

Reviewed By: yfeldblum

Differential Revision: D3119616

fb-gh-sync-id: defa27b84aafbd4333b2ca301f07c226f0386f44
fbshipit-source-id: defa27b84aafbd4333b2ca301f07c226f0386f44
folly/experimental/fibers/Fiber.cpp
folly/experimental/fibers/Fiber.h
folly/experimental/fibers/FiberManager.h
folly/experimental/fibers/scripts/utils.gdb [new file with mode: 0644]