1.java层
Log.d(TAG, "calltrack=" , new Throwable());
示例:
public static int setAudioPortGain(AudioPort port, AudioGainConfig gain) {
if (port == null || gain == null) {
return ERROR_BAD_VALUE;
}
AudioPortConfig activeConfig = port.activeConfig();
AudioPortConfig config = new AudioPortConfig(port, activeConfig.samplingRate(),
activeConfig.channelMask(), activeConfig.format(), gain);
config.mConfigMask = AudioPortConfig.GAIN;
Log.d(TAG, "setAudioPortGain=" , new Throwable());
return AudioSystem.setAudioPortConfig(config);
}
2.native层:
对应的android.mk或android.bp文件加上 "libutilscallstack"
cpp文件引用头文件#include <utils/CallStack.h>
使用方法,在函数中加上CallStack cs("calltrack");
示例:
@@ -211,6 +212,8 @@ status_t AudioSystem::setParameters(audio_io_handle_t ioHandle, const String8& k
{
const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
if (af == 0) return PERMISSION_DENIED;
+ ALOGI("AudioSystem::setParameters, param = %s", keyValuePairs.c_str());
+ CallStack cs("AudioSystem");
return af->setParameters(ioHandle, keyValuePairs);
}
3.kernel层
比较简单,直接在函数中加上dump_stack();