Remove usyms.py and redundant ProcessSymbols class
authorSasha Goldshtein <goldshtn@gmail.com>
Thu, 9 Feb 2017 01:54:56 +0000 (20:54 -0500)
committerSasha Goldshtein <goldshtn@gmail.com>
Tue, 21 Feb 2017 09:30:43 +0000 (09:30 +0000)
This class was obsolete and replaced by the SymbolCache class.

examples/tracing/mallocstacks.py
src/python/bcc/usyms.py [deleted file]

index 8c745ed..8b72d20 100644 (file)
@@ -11,7 +11,7 @@
 # Licensed under the Apache License, Version 2.0 (the "License")
 
 from __future__ import print_function
-from bcc import BPF, ProcessSymbols
+from bcc import BPF
 from time import sleep
 import sys
 
@@ -43,8 +43,6 @@ int alloc_enter(struct pt_regs *ctx, size_t size) {
 b.attach_uprobe(name="c", sym="malloc", fn_name="alloc_enter", pid=pid)
 print("Attaching to malloc in pid %d, Ctrl+C to quit." % pid)
 
-decoder = ProcessSymbols(pid)
-
 # sleep until Ctrl-C
 try:
     sleep(99999999)
@@ -57,4 +55,4 @@ stack_traces = b.get_table("stack_traces")
 for k, v in reversed(sorted(calls.items(), key=lambda c: c[1].value)):
     print("%d bytes allocated at:" % v.value)
     for addr in stack_traces.walk(k.value):
-        print("\t%s (%x)" % (decoder.decode_addr(addr), addr))
+        print("\t%s" % b.sym(addr, pid, show_address=True))
diff --git a/src/python/bcc/usyms.py b/src/python/bcc/usyms.py
deleted file mode 100644 (file)
index e434738..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2016 Sasha Goldshtein
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-import ctypes as ct
-from .libbcc import lib, bcc_symbol
-
-class ProcessSymbols(object):
-    def __init__(self, pid):
-        """
-        Initializes the process symbols store for the specified pid.
-        Call refresh_code_ranges() periodically if you anticipate changes
-        in the set of loaded libraries or their addresses.
-        """
-        self.cache = lib.bcc_symcache_new(pid)
-
-    def refresh_code_ranges(self):
-        lib.bcc_symcache_refresh(self.cache)
-
-    def decode_addr(self, addr):
-        """
-        Given an address, return the best symbolic representation of it.
-        If it doesn't fall in any module, return its hex string. If it
-        falls within a module but we don't have a symbol for it, return
-        the hex string and the module. If we do have a symbol for it,
-        return the symbol and the module, e.g. "readline+0x10 [bash]".
-        """
-        sym = bcc_symbol()
-        psym = ct.pointer(sym)
-        if lib.bcc_symcache_resolve(self.cache, addr, psym) < 0:
-            if sym.module and sym.offset:
-                return "0x%x [%s]" % (sym.offset, sym.module)
-            return "%x" % addr
-        return "%s+0x%x [%s]" % (sym.name, sym.offset, sym.module)