OLD | NEW |
1 // Copyright (c) 2008, Google Inc. | 1 // Copyright (c) 2008, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 29 matching lines...) Expand all Loading... |
40 // version of stacktrace_x86-inl.h that has heuristic support for | 40 // version of stacktrace_x86-inl.h that has heuristic support for |
41 // dealing with FPO, similar to what WinDbg does (see | 41 // dealing with FPO, similar to what WinDbg does (see |
42 // http://www.nynaeve.net/?p=97). | 42 // http://www.nynaeve.net/?p=97). |
43 // | 43 // |
44 // The solution we've ended up doing is to call the undocumented | 44 // The solution we've ended up doing is to call the undocumented |
45 // windows function RtlCaptureStackBackTrace, which probably doesn't | 45 // windows function RtlCaptureStackBackTrace, which probably doesn't |
46 // work with FPO but at least is fast, and doesn't require a symbol | 46 // work with FPO but at least is fast, and doesn't require a symbol |
47 // server. | 47 // server. |
48 // | 48 // |
49 // This code is inspired by a patch from David Vitek: | 49 // This code is inspired by a patch from David Vitek: |
50 // http://code.google.com/p/gperftools/issues/detail?id=83 | 50 // http://code.google.com/p/google-perftools/issues/detail?id=83 |
51 | 51 |
52 #ifndef BASE_STACKTRACE_WIN32_INL_H_ | 52 #ifndef BASE_STACKTRACE_WIN32_INL_H_ |
53 #define BASE_STACKTRACE_WIN32_INL_H_ | 53 #define BASE_STACKTRACE_WIN32_INL_H_ |
54 // Note: this file is included into stacktrace.cc more than once. | 54 // Note: this file is included into stacktrace.cc more than once. |
55 // Anything that should only be defined once should be here: | 55 // Anything that should only be defined once should be here: |
56 | 56 |
57 #include "config.h" | 57 #include "config.h" |
58 #include <windows.h> // for GetProcAddress and GetModuleHandle | 58 #include <windows.h> // for GetProcAddress and GetModuleHandle |
59 #include <assert.h> | 59 #include <assert.h> |
60 | 60 |
(...skipping 20 matching lines...) Expand all Loading... |
81 } | 81 } |
82 | 82 |
83 PERFTOOLS_DLL_DECL int GetStackFrames(void** /* pcs */, | 83 PERFTOOLS_DLL_DECL int GetStackFrames(void** /* pcs */, |
84 int* /* sizes */, | 84 int* /* sizes */, |
85 int /* max_depth */, | 85 int /* max_depth */, |
86 int /* skip_count */) { | 86 int /* skip_count */) { |
87 assert(0 == "Not yet implemented"); | 87 assert(0 == "Not yet implemented"); |
88 return 0; | 88 return 0; |
89 } | 89 } |
90 #endif // BASE_STACKTRACE_WIN32_INL_H_ | 90 #endif // BASE_STACKTRACE_WIN32_INL_H_ |
OLD | NEW |