/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/strace.py

  • Committer: John Arbash Meinel
  • Date: 2007-04-09 22:11:22 UTC
  • mto: This revision was merged to the branch mainline in revision 2566.
  • Revision ID: john@arbash-meinel.com-20070409221122-qh66j4pk3kqxjn9c
Cleanup bzrlib/benchmarks/* so that everything at least has a valid doc string.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
"""Support for running strace against the current process."""
19
19
 
20
 
import errno
21
20
import os
22
21
import signal
23
22
import subprocess
33
32
 
34
33
    :return: a tuple: function-result, a StraceResult.
35
34
    """
36
 
    return strace_detailed(function, args, kwargs)
37
 
 
38
 
 
39
 
def strace_detailed(function, args, kwargs, follow_children=True):
40
 
    # FIXME: strace is buggy
41
 
    # (https://bugs.launchpad.net/ubuntu/+source/strace/+bug/103133) and the
42
 
    # test suite hangs if the '-f' is given to strace *and* more than one
43
 
    # thread is running. Using follow_children=False allows the test suite to
44
 
    # disable fork following to work around the bug.
45
 
 
46
35
    # capture strace output to a file
47
36
    log_file = tempfile.NamedTemporaryFile()
48
37
    log_file_fd = log_file.fileno()
49
38
    pid = os.getpid()
50
39
    # start strace
51
 
    strace_cmd = ['strace', '-r', '-tt', '-p', str(pid), '-o', log_file.name]
52
 
    if follow_children:
53
 
        strace_args.append('-f')
54
 
    proc = subprocess.Popen(strace_cmd,
55
 
                            stdout=subprocess.PIPE,
56
 
                            stderr=subprocess.STDOUT)
 
40
    proc = subprocess.Popen(['strace',
 
41
        '-f', '-r', '-tt', '-p', str(pid), '-o', log_file.name
 
42
        ],
 
43
        stdout=subprocess.PIPE,
 
44
        stderr=subprocess.STDOUT)
57
45
    # Wait for strace to attach
58
46
    attached_notice = proc.stdout.readline()
59
47
    # Run the function to strace